जवाबों:
जावा एसई 8 के बाद से, उपयोगकर्ताओं को java.time (JSR-310) पर माइग्रेट करने के लिए कहा जाता है। वहाँ scala के लिए scala पुस्तकालयों java.time, जैसे scala- समय बनाने के लिए प्रयास कर रहे हैं । यदि SE 8 से कम लक्ष्यीकरण नीचे दिए गए किसी एक का उपयोग करता है। यह भी देखें कि JSR-310 क्यों Joda-Time नहीं है
Joda Time के लिए एक नया Scala आवरण । यह परियोजना स्काला-टाइम से आगे निकली क्योंकि ऐसा लगता है कि स्काला-टाइम का अब कोई रखरखाव नहीं है।
import com.github.nscala_time.time.Imports._
DateTime.now // returns org.joda.time.DateTime = 2009-04-27T13:25:42.659-07:00
DateTime.now.hour(2).minute(45).second(10) // returns org.joda.time.DateTime = 2009-04-27T02:45:10.313-07:00
DateTime.now + 2.months // returns org.joda.time.DateTime = 2009-06-27T13:25:59.195-07:00
DateTime.nextMonth < DateTime.now + 2.months // returns Boolean = true
DateTime.now to DateTime.tomorrow // return org.joda.time.Interval = > 2009-04-27T13:47:14.840/2009-04-28T13:47:14.840
(DateTime.now to DateTime.nextSecond).millis // returns Long = 1000
2.hours + 45.minutes + 10.seconds
// returns com.github.nscala_time.time.DurationBuilder
// (can be used as a Duration or as a Period)
(2.hours + 45.minutes + 10.seconds).millis
// returns Long = 9910000
2.months + 3.days
// returns Period
Joda Time एक अच्छी Java लाइब्रेरी है, Jorge Ortiz द्वारा बनाए गए scala-time में Joda Time के लिए Scala आवरण / अंतर्निहित रूपांतरण लाइब्रेरी उपलब्ध है । (नोट इम्पीचिट्स में एक प्रदर्शन हिट है, लेकिन यह इस बात पर निर्भर करता है कि आप क्या करते हैं यदि आप नोटिस करेंगे। और यदि आप एक प्रदर्शन समस्या में भाग लेते हैं, तो आप बस जोडा इंटरफ़ेस पर वापस लौट सकते हैं)
README से:
USAGE:
import org.scala_tools.time.Imports._
DateTime.now
// returns org.joda.time.DateTime = 2009-04-27T13:25:42.659-07:00
DateTime.now.hour(2).minute(45).second(10)
// returns org.joda.time.DateTime = 2009-04-27T02:45:10.313-07:00
DateTime.now + 2.months
// returns org.joda.time.DateTime = 2009-06-27T13:25:59.195-07:00
DateTime.nextMonth < DateTime.now + 2.months
// returns Boolean = true
DateTime.now to DateTime.tomorrow
// return org.joda.time.Interval =
// 2009-04-27T13:47:14.840/2009-04-28T13:47:14.840
(DateTime.now to DateTime.nextSecond).millis
// returns Long = 1000
2.hours + 45.minutes + 10.seconds
// returns org.scala_tools.time.DurationBuilder
// (can be used as a Duration or as a Period)
(2.hours + 45.minutes + 10.seconds).millis
// returns Long = 9910000
2.months + 3.days
// returns Period
Imports
और scala.concurrent.duration._
। इसके बजाय सादे JodaTime का इस्तेमाल किया और इस पर खुद की साइकिल लिखी।
यदि आप Java 8 का उपयोग कर रहे हैं, तो nscala
अब और उपयोग करने की कोई आवश्यकता नहीं है। java.time
पैकेज (JSR-310) के तहत Joda-Time लाइब्रेरी को Java 8 में स्थानांतरित कर दिया गया है । बस उस पैकेज को अपने स्काला प्रोजेक्ट में आयात करें।
स्काला में तारीखों के साथ काम करने का कोई मानक तरीका नहीं है । उपलब्ध विकल्प हैं:
मैं java.util का उपयोग करने से बचूंगा। इसके आसपास के अच्छी तरह से प्रलेखित मुद्दों के कारण।
प्रेरणा:
जावा तिथि और कैलेंडर लाइब्रेरी काफी हद तक अपर्याप्त हैं। वे उत्परिवर्तनीय हैं, धागा-सुरक्षित नहीं हैं, और उपयोग करने के लिए बहुत असुविधाजनक है।
जोडा टाइम लाइब्रेरी जावा की तारीख और कैलेंडर कक्षाओं के लिए एक महान प्रतिस्थापन है। वे डिफ़ॉल्ट रूप से अपरिवर्तनीय हैं, एक बहुत अमीर और अच्छे एपीआई हैं, और जब आवश्यक हो आसानी से जावा की तिथि और कैलेंडर कक्षाओं में परिवर्तित किया जा सकता है।
यह परियोजना जोडा टाइम लाइब्रेरी के आसपास सुविधा की एक पतली परत प्रदान करती है, जिससे उन्हें स्काला के भीतर उपयोग करने के लिए अधिक मुहावरेदार बना दिया जाता है।
( https://github.com/jorgeortiz85/scala-time से कॉपी किया गया )