के साथ ग्रोवी का टाइम कैटलियन जावा 8 लोकलडेट और लोकलडेटाइम के साथ टाइमकैरिटी (या समकक्ष) का उपयोग करने के तरीके या उदाहरण हैं? मुझे मिले सभी कोड स्निपेट java.util.Date को संदर्भित करते हैं जिन्हें मैं टालने का प्रयास कर रहा हूं।स्थानीय डेटा और स्थानीयडेटाइम
उत्तर
:
LocalDate.now().plusDays(2)
मुझे यकीन है कि TimeCategory आप क्या हासिल होगा नहीं कर रहा हूँ?
आप LOCALDATE और LocalDatTime काफी बस की metaClass करने के लिए यह हैक कर सकते हैं:
import groovy.time.*
import java.time.*
LocalDate.metaClass {
plus { Duration d ->
delegate.plusYears(d.years)
.plusMonths(d.months)
.plusDays(d.days)
}
}
LocalDateTime.metaClass {
plus { Duration d ->
delegate.plusYears(d.years)
.plusMonths(d.months)
.plusDays(d.days)
.plusHours(d.hours)
.plusMinutes(d.minutes)
.plusSeconds(d.seconds)
}
}
use(TimeCategory) {
LocalDateTime.now() + 4.days
}
एक तुच्छ उदाहरण होगा:
import groovy.time.TimeCategory
import java.time.LocalDate
import java.time.LocalDateTime
use(TimeCategory) {
println Date.parse('yyyy-MM-dd', LocalDate.now().toString()) + 4.hours
println Date.parse("yyyy-MM-dd'T'hh:mm:ss", LocalDateTime.now().toString()) - 4.hours
}
वहाँ java8 समय संस्थाओं के लिए कोई देशी समर्थन है
आगे की हलचल के बिना? आपके द्वारा सूचीबद्ध उदाहरण हालांकि वैध है वर्बोज़ का तरीका है और शाब्दिक रूप से TimeCategory का उपयोग करने के बिंदु को मारता है। – Pierre
नहीं, इसमें कोई नहीं है। मैं मानता हूं कि यह वर्बोज़ है। यदि आप समय कुशलता की तलाश में हैं तो लोकलडेट टाइम और लोकलडेट एपीआई में पहले से ही 'plusHours() 'जैसी विधियां हैं। क्या आप ऐसा कुछ ढूंढ रहे हैं? – dmahapatro
हां। जावा मेरे अंदर मजबूत है :) और सभी स्थानीय तारीख और समय में हेरफेर कार्यों के बारे में पूरी तरह से अवगत है। हालांकि एक निश्चित पठनीयता है कि टाइमकैबिन प्रदान करता है कि मेरे लक्षित दर्शकों (क्यूए) को अपील करता है जो कि बेहतर है। मुझे लगता है कि मैं बस java8 समय सीधे – Pierre
मैं भी निराश थे TimeCategory
घोषणा करता है कि यह खुद अवधि है और जावा 8 अनुकूल नहीं है। इससे मुझे अपना खुद का कोड लिखने के लिए प्रेरित किया गया, जिसे मैंने सोचा था कि इस सवाल के लिए प्रासंगिक होगा। LocalDateTime
के विपरीत यह ZonedDateTime
पर केंद्रित है क्योंकि मुझे टाइमज़ोन तर्क में दिलचस्पी है जहां मैं इसका उपयोग कर रहा हूं। यह groovy.time.TimeCategory
वर्ग के रूप में लगभग पूरा नहीं है, और इसमें केवल कुछ हद तक ऑपरेशन हैं जिनकी मुझे रूचि थी, इसलिए इसमें शामिल होने के लिए स्वतंत्र महसूस करें।
import java.time.Duration
import java.time.ZoneOffset
import java.time.ZonedDateTime
import java.time.format.DateTimeFormatter
import java.time.temporal.ChronoUnit
class TimeCategory {
static getDays(Integer self) { Duration.ofDays self }
static getHours(Integer self) { Duration.ofHours self }
static getMillis(Integer self) { Duration.ofMillis self }
static getMinutes(Integer self) { Duration.ofMinutes self }
static getNanos(Integer self) { Duration.ofNanos self }
static getSeconds(Integer self) { Duration.ofSeconds self }
static getWeeks(Integer self) { Duration.ofDays self * 7 }
static getDay(Integer self) { Duration.ofDays self }
static getHour(Integer self) { Duration.ofHours self }
static getMilli(Integer self) { Duration.ofMillis self }
static getMinute(Integer self) { Duration.ofMinutes self }
static getNano(Integer self) { Duration.ofNanos self }
static getSecond(Integer self) { Duration.ofSeconds self }
static getWeek(Integer self) { Duration.ofDays self * 7 }
static ZonedDateTime getAgo(Duration self) { ZonedDateTime.now() - self }
static ZonedDateTime getUtc(ZonedDateTime self) { self.withZoneSameInstant(ZoneOffset.UTC) }
static ZonedDateTime getLocal(ZonedDateTime self) { self.withZoneSameInstant(ZoneOffset.systemDefault()) }
static ZonedDateTime getNow() { ZonedDateTime.now() }
static Duration minus(ZonedDateTime self, ZonedDateTime other) { Duration.between(self, other) }
static BigInteger getTotalNanos(Duration self) { self.seconds.toBigInteger() * 10 ** 9 + self.nano }
static String toString(ZonedDateTime self, String pattern) { self.format(DateTimeFormatter.ofPattern(pattern)) }
static Duration mod(Duration self, Duration other) {
def (long seconds, int nanos) = (self.totalNanos % other.totalNanos).divideAndRemainder(10g.pow(9))
Duration.ofSeconds(seconds) + nanos.nanos
}
static load() {
Integer.mixin(TimeCategory)
ZonedDateTime.mixin(TimeCategory)
Duration.mixin(TimeCategory)
}
}
उदाहरण उपयोग:
// I prefer putting this in a start-up location and pollute the namespace rather than use
// `use() {...}`
TimeCategory.load()
// Construct readable java 8 durations
Duration d = 1.day + 2.hours + 3.minutes - 4.seconds
// Easily construct dates relative to now
ZonedDateTime yesterday = 1.day.ago
// Of course, you can still call "unsugared" functions like truncatedTo for rounding down
ZonedDateTime today = TimeCategory.now.truncatedTo(ChronoUnit.DAYS)
// Converting between local and utc doesn't change the underlying instant
assert 0.seconds == yesterday.utc - yesterday.local
// Modulo arithmetic. Cool!
assert 1.minute % 17.seconds == 9.seconds
// Slightly cleaner date formatting
println "Today in strange format ${today.toString('dd/yy/MM')}"
- 1. * स्थानीय * जीमेल और फेसबुक ऐप डेटा
- 2. jqGrid "स्थानीय" डेटा
- 3. लोड डेटा स्थानीय इन्फ्लू पीडीओ
- 4. स्थानीय डेटाबेस संग्रहण डिफ़ॉल्ट डेटा
- 5. स्थानीय डेटा सेंटर को केवल
- 6. स्थानीय स्टोरेज डेटा को हटाकर
- 7. स्थानीय भंडारण और JSON
- 8. वादे और स्थानीय भंडारण के साथ कोणीय जेएस लॉगिंग डेटा
- 9. PHP और स्थानीय स्टोरेज;
- 10. रैक-स्थानीय मानचित्र कार्यों और डेटा-स्थानीय मानचित्र कार्यों के बीच क्या अंतर है?
- 11. MySQL डेटा लोड स्थानीय INFILE अजगर
- 12. Breeze.js और HTML5 स्थानीय संग्रहण
- 13. उत्परिवर्तनीय थ्रेड-स्थानीय डेटा के लिए उपनाम
- 14. आबाद ExtJS 3.4 स्थानीय JSON डेटा
- 15. सी # लैम्ब्डा, स्थानीय वैरिएबल बनाम रिटर्न डेटा
- 16. डेटा लोड स्थानीय INFILE php mysql
- 17. MySql फ़ाइल आयात (डेटा लोड स्थानीय INFILE)
- 18. UIWebView स्थानीय वीडियो डेटा लोड करें
- 19. लिनक्स कर्नेल मॉड्यूल में थ्रेड स्थानीय डेटा
- 20. स्थानीय डेटा में फॉर्म डेटा सहेजना और इसे रीफ्रेश पर दिखाएं
- 21. बनाना और स्थानीय स्तर पर
- 22. Macrodef और "स्थानीय गुण"
- 23. स्थानीय और रिमोट
- 24. स्थानीय और सर्वर समय
- 25. क्लोन और स्थानीय एक
- 26. थ्रेड सुरक्षा और स्थानीय चर
- 27. स्थानीय मॅक्सिमा/चोटियों और हिस्टोग्राम
- 28. स्थानीय और लाइव डेटाबेस कैसे विलय करें?
- 29. सप्ताह के किसी दिए गए दिन के लिए अगला स्थानीयडेटाइम प्राप्त करें
- 30. एसक्यूएल केस और स्थानीय चर
ऊपर मेरी टिप्पणी देखेंगे। यह पठनीयता और मेरे लक्षित दर्शकों के बारे में है जो जावा में बहुत धाराप्रवाह नहीं हैं। – Pierre
@Pierre आप बिना किसी परेशानी के एलडी और एलडीटी को समर्थन जोड़ सकते हैं ... देखें –
बिल्कुल सही! अभी भी groovy गतिशील प्रकृति के लिए उपयोग नहीं किया जाता है और यह बाहरी और यहां तक कि अंतिम कक्षाओं में कस्टम समर्थन जोड़ने का एक शानदार उदाहरण है! – Pierre