2016-04-28 10 views
7

पर LocalDateTime ऑब्जेक्ट का निर्माण करने का एक अच्छा/आसान तरीका है जो आज से 6 बजे प्रदर्शित होता है?जावा 8 लोकलडेटाइम आज विशिष्ट समय

LocalDateTime todayAt6 = LocalDateTime.now().withHour(6).withMinute(0).withSecond(0).withNano(0); 

किसी तरह मैं जब सब मैं कहना चाहता हूँ now().withHours() है के साथ मिनट/सेकंड/नैनो निपटने पसंद नहीं है।

उत्तर

15

LocalDate विभिन्न अतिभारित है इस तरह के रूप में this oneatTime तरीकों, है, जो (दिन और मिनट के समय) दो तर्क लेता है:

LocalDateTime todayAt6 = LocalDate.now().atTime(6, 0); 
3

स्वीकार किए जाते हैं जवाब एक अच्छा एक है। आप अपना स्वयं का clock बना सकते हैं यह करने के लिए:

Clock clock = Clock.tick(Clock.systemDefaultZone(), Duration.ofHours(1)); 
LocalDateTime dt = LocalDateTime.now(clock); 

यह एक उपयोगी विकल्प हो सकता है अगर बार-बार इस्तेमाल, क्योंकि घड़ी एक स्थिर चर में संग्रहित किया जा सकता है:

public static final Clock CLOCK = Clock.tick(Clock.systemDefaultZone(), Duration.ofHours(1)); 
LocalDateTime dt = LocalDateTime.now(CLOCK); 
1

एक अन्य विकल्प (विशेष रूप से यदि आप पहले से मौजूद LocalDateTime को बदलना चाहते हैं) with() method का उपयोग करना है।

यह पैरामीटर के रूप में TemporalAdjuster स्वीकार करता है।

कक्षाएं LOCALDATE और LOCALTIME लागू TemporalAdjuster, इस प्रकार इस विधि तिथि, समय बदलने के लिए इस्तेमाल किया जा सकता या ऑफसेट:

और javadoc के अनुसार, यह एक LocalTime को विधि गुजर वास्तव में आपको क्या आवश्यकता है

    परिणाम = localDateTime.with (दिनांक);
    परिणाम = localDateTime.with (time);

तो, कोड होगा:

LocalDateTime todayAt6 = LocalDateTime.now().with(LocalTime.of(6, 0)); 
0

LocalDate.now().atTime(6, 0) के लिए एक वैकल्पिक है:

import java.time.temporal.ChronoUnit; 

LocalDateTime.now().truncatedTo(ChronoUnit.DAYS).withHour(6); 
संबंधित मुद्दे