2015-06-27 16 views
8

द्वारा जावा 8जावा 8 समय एपीआई - Instant.now (घड़ी) बनाम LocaldateTime.now (घड़ी)

1. System.out.println(LocalDateTime.now(Clock.systemDefaultZone())); 
    2. System.out.println(Instant.now(Clock.systemDefaultZone())); 

पंक्ति 1 प्रिंट वर्तमान समय के लिए कोड का पालन के लिए ऑफसेट लेकिन जोड़ने जोड़े बिना लाइन 2 प्रिंट वर्तमान समय ऑफसेट।

मैंने दोनों के स्रोत कोड की जांच की और पाया कि LocaDateTime.now(clock) ऑफसेट जोड़कर clock.instant() वापसी का समय लौटाएं लेकिन Instant.now(clock) ऐसा नहीं कर रहा है।

ऐसा क्यों डिज़ाइन किया गया? क्या हम दोनों मामलों में एक ही परिणाम की उम्मीद नहीं कर रहे हैं?

उत्तर

6

अद्यतन: समय-समय पर यूटीसी के साथ तत्काल कुछ नहीं करना है। यह यूटीसी से केवल एक समय मानक के रूप में संबंधित है।

मुख्य अंतर रिटर्न प्रकार है। उनके पास अलग-अलग स्ट्रिंग प्रस्तुतियां होती हैं क्योंकि प्रकारों के स्वयं के बहुत अलग अर्थ होते हैं।

त्वरित # अब (घड़ी)रिटर्न देता है। एक तत्काल"[a]n instantaneous point on the time-line" है।

लोकलडेट # अब (घड़ी)स्थानीयडेट देता है। एक लोकलटाइम"a description of the local time as seen on a wall clock" है।

एक परिणाम त्वरित # अब (घड़ी) और LOCALDATE # अब (घड़ी) के रूप में बहुत अलग बातें मतलब है और स्वाभाविक रूप से भिन्न परिणामों की है। आम बात यह है कि उनके पास एक नाम है। विधि नाम धूल हैं। प्रकारों का संदर्भ लें।

एक निश्चित घड़ी को दोनों Instant.now (घड़ी) और LocalDate.now (घड़ी) निरंतर मूल्यों वापस आ जाएगी। को स्वीकार करने का बिंदु पैरामीटर के रूप में क्लॉक संदर्भ समय या घड़ी रिज़ॉल्यूशन जैसी चीज़ों को नियंत्रित करने में सक्षम होना है।

+0

क्या आप कृपया मुझे बता सकते हैं कि क्लॉक को पैरामीटर के रूप में पास करने की आवश्यकता क्या है? – nantitv

+2

क्लॉक को पैरामीटर के रूप में अनुमति दी जाती है ताकि परीक्षण या निश्चित रूप से सेकंड या मिनट जैसे विभिन्न संकल्पों में एक निश्चित या ऑफसेट घड़ी जैसे मामलों का उपयोग करने की अनुमति दी जा सके। https://docs.oracle.com/javase/8/docs/api/java/time/Clock.html –

+0

@nantitv मैंने अपना जवाब दोबारा लिखा है। यह पहले थोड़ा अस्पष्ट था। क्या यह अब आपके प्रश्न का प्रभावी ढंग से जवाब देता है? –

संबंधित मुद्दे