जावा: getMinutes और getHours


142

आप घंटे और मिनट कैसे प्राप्त करते हैं Date.getHoursऔर Date.getMinutesपदावनत हो जाते हैं? Google खोज पर मुझे जो उदाहरण मिले, उन्होंने पदावनत विधियों का उपयोग किया।


2
FYI करें, बहुत परेशान करने वाली तारीख-समय की कक्षाएं जैसे कि java.util.Date, java.util.Calendarऔर java.text.SimpleDateFormatअब विरासत हैं , जावा 8 और बाद में निर्मित java.time कक्षाओं द्वारा दबा दी गई हैं । ओरेकल द्वारा ट्यूटोरियल देखें ।
बेसिल बोर्के

जवाबों:


171

मानक java.util.Date कक्षाओं के बजाय Joda Time का उपयोग करने का प्रयास करें । जोडा टाइम लाइब्रेरी में तारीखों को संभालने के लिए बेहतर एपीआई है।

DateTime dt = new DateTime();  // current time
int month = dt.getMonth();     // gets the current month
int hours = dt.getHourOfDay(); // gets hour of day

जोडा टाइम लाइब्रेरी का उपयोग करने के पेशेवरों और विपक्षों के लिए यह प्रश्न देखें ।

Joda Time एक मानक घटक के रूप में Java के कुछ भविष्य के संस्करण में भी शामिल हो सकता है, JSR-310 देखें


यदि आपको पारंपरिक java.util.Date और java.util.Calendar क्लासेस का उपयोग करना है, तो उनके JavaDoc की सहायता के लिए देखें ( java.util.Calendar और java.util.Date )।

आप इस तरह के पारंपरिक वर्गों का उपयोग दी गई तारीख से खेतों को लाने के लिए कर सकते हैं।

Date date = new Date();   // given date
Calendar calendar = GregorianCalendar.getInstance(); // creates a new calendar instance
calendar.setTime(date);   // assigns calendar to given date 
calendar.get(Calendar.HOUR_OF_DAY); // gets hour in 24h format
calendar.get(Calendar.HOUR);        // gets hour in 12h format
calendar.get(Calendar.MONTH);       // gets month number, NOTE this is zero based!

2
प्रश्न: अब जब कि Java 8 को LocalDateTime के साथ रोल आउट कर दिया गया है, तो क्या कोई कारण है जो आपको LocalDateTime पर Joda Time का उपयोग करना चाहिए?
14

@ क्रिप्स राय भिन्न हैं। Joda-Time आधिकारिक तौर पर java.time का उपयोग करने की सलाह देता है।
ओले वीवी

96

Javadoc से Date.getHours के लिए

As of JDK version 1.1, replaced by Calendar.get(Calendar.HOUR_OF_DAY)

इसलिए उपयोग करें

Calendar rightNow = Calendar.getInstance();
int hour = rightNow.get(Calendar.HOUR_OF_DAY);

और getMinute के लिए बराबर है।


6
तो ... यह कैसे काम करता है अगर मैं एक तारीख से घंटों को प्राप्त करना चाहता हूं जो अब अनुरूप नहीं है?
माइकल


इस भयानक वर्ग को आधुनिक java.time वर्गों द्वारा जेएसआर 310 को अपनाने के साथ वर्षों पहले दबा दिया गया था ZonedDateTime। इसके बजाय उपयोग करें ।
तुलसी बॉर्क

58

java.time

जबकि मैं Joda-Time का प्रशंसक हूं , Java 8 java.time पैकेज का परिचय देता है जो अंत में एक सार्थक जावा मानक समाधान है! इस लेख को जावा एसई 8 दिनांक और समय , घंटे और मिनटों के बाहर java.time पर अच्छी जानकारी के लिए पढ़ें।

विशेष रूप से, LocalDateTimeकक्षा को देखें।

घंटे और मिनट:

LocalDateTime.now().getHour();
LocalDateTime.now().getMinute();

4
यह सबसे अच्छा जवाब है। आप पाठक और अपने आप को याद दिलाने के लिए स्पष्ट समय क्षेत्र प्रदान करना चाह सकते हैं कि यह एक समय क्षेत्र संवेदनशील ऑपरेशन है LocalDateTime.now(ZoneId.of("Asia/Manilla")):। now()स्थिरता के लिए केवल एक बार पढ़ें (दो कॉल के बीच समय बीत जाएगा)। यदि तारीख वास्तव में अप्रासंगिक है, तो LocalTimeभी काम करता है।
ओले वीवी

1
इसके लिए शुक्रिया। मैं किसी भी तरह इस अद्भुत वर्ग में लंबे समय के लिए बनाया गया है!
सारथी

ओले वीवी द्वारा टिप्पणी सही है। लेकिन इससे भी बेहतर, ZonedDateTimeवर्ग के बजाय का उपयोग करें LocalDateTime। साथ LocalDateTimeआप बिना किसी कारण के लिए बहुमूल्य समय क्षेत्र जानकारी को त्यागकर कर रहे हैं, कुछ भी नहीं के साथ प्राप्त की।
बासिल बॉर्क

उपयोगी अगर आपको पीछे की ओर संगत नहीं होना है। अगर आप एंड्रॉइड के लिए लिख रहे हैं और पुराने एपीआई संस्करणों (या जावा 8 हमेशा उपलब्ध नहीं है, तो किसी भी अन्य उदाहरण में) का समर्थन करने पर उचित नहीं है।
M_M

जावा 6 और 7 के लिए @M_M , java.time की अधिकांश कार्यक्षमता थ्रीटेन-बैकपोर्ट लाइब्रेरी में बैक-पोर्ट की गई है । इसके अलावा तीनटीनबप में शुरुआती एंड्रॉइड के लिए अनुकूलित । लिंक के लिए, मेरे उत्तर का अंतिम भाग देखें ।
बेसिल बोर्क

36

सबसे पहले, java.util.Calendar को आयात करें

Calendar now = Calendar.getInstance();
System.out.println(now.get(Calendar.HOUR_OF_DAY) + ":" + now.get(Calendar.MINUTE));

12

tl; डॉ

ZonedDateTime.now().getHour()

… या…

LocalTime.now().getHour() 

ZonedDateTime

जद द्वारा उत्तर अच्छा नहीं बल्कि इष्टतम है। वह उत्तर LocalDateTimeकक्षा का उपयोग करता है । समय क्षेत्र या ऑफ़सेट-यूटीसी की किसी भी अवधारणा को खोने से, वह वर्ग एक पल का प्रतिनिधित्व नहीं कर सकता है।

उपयोग करने के लिए बेहतर है ZonedDateTime

ZoneId z = ZoneID.of( "America/Montreal" ) ;
ZonedDateTime zdt = ZonedDateTime.now( z ) ;

समय क्षेत्र निर्दिष्ट करें

यदि आप ZoneIdतर्क को छोड़ देते हैं, तो किसी को JVM के वर्तमान डिफ़ॉल्ट समय क्षेत्र का उपयोग करके रनटाइम पर निहित किया जाता है।

तो यह:

ZonedDateTime.now()

... इस के रूप में ही है:

ZonedDateTime.now( ZoneId.systemDefault() )

स्पष्ट होने के लिए बेहतर, अपने वांछित / अपेक्षित समय क्षेत्र को पारित करना। रनटाइम के दौरान डिफ़ॉल्ट किसी भी समय बदल सकता है।

यदि महत्वपूर्ण है, तो उपयोगकर्ता के साथ समय क्षेत्र की पुष्टि करें।

घंटे मिनट

ZonedDateTimeघंटे और मिनट के लिए पूछताछ ।

int hour = zdt.getHour() ;
int minute = zdt.getMinute() ;

LocalTime

यदि आप समय क्षेत्र के बिना सिर्फ दिन का समय चाहते हैं, तो निकालें LocalTime

LocalTime lt = zdt.toLocalTime() ;

या ZonedDateTimeपूरी तरह से छोड़ें , सीधे जा रहे हैं LocalTime

LocalTime lt = LocalTime.now( z ) ;  // Capture the current time-of-day as seen in the wall-clock time used by the people of a particular region (a time zone).

java.time प्रकार

आधुनिक java.time बनाम विरासत में तारीख-समय कक्षाओं के प्रकार।


जावा के बारे में

Java.time ढांचे जावा 8 और बाद में बनाया गया है। इन कक्षाओं परेशानी वर्ष प्रतिस्थापित विरासत जैसे तिथि-समय कक्षाएं java.util.Date, Calendar, और SimpleDateFormat

अधिक जानने के लिए, Oracle ट्यूटोरियल देखें । और कई उदाहरणों और स्पष्टीकरणों के लिए ढेर अतिप्रवाह खोजें। विशिष्टता JSR 310 है

Joda समय परियोजना, अब में रखरखाव मोड , प्रवास करने की सलाह देता java.time कक्षाएं।

आप अपने डेटाबेस से सीधे java.time वस्तुओं का आदान-प्रदान कर सकते हैं । JDBC 4.2 या उसके बाद के JDBC ड्राइवर का अनुपालन करें । तारों की कोई जरूरत नहीं, कक्षाओं की कोई जरूरत नहीं ।java.sql.*

Java.time कक्षाएं कहाँ से प्राप्त करें?

ThreeTen-अतिरिक्त परियोजना अतिरिक्त कक्षाओं के साथ java.time फैली हुई है। यह परियोजना java.time के संभावित भविष्य के परिवर्धन के लिए एक साबित जमीन है। आप यहाँ कुछ उपयोगी वर्गों जैसे मिल सकता है Interval, YearWeek, YearQuarter, और अधिक


6

कैलेंडर का प्रयास करें। एक कैलेंडर-ऑब्जेक्ट प्राप्त करने के लिए getInstance का उपयोग करें। फिर आवश्यक दिनांक सेट करने के लिए setTime का उपयोग करें। अब आप HOUR_OF_DAY जैसे उपयुक्त स्थिरांक के साथ (int फ़ील्ड) का उपयोग कर सकते हैं या आपके द्वारा आवश्यक मानों को पढ़ने के लिए।

http://java.sun.com/javase/6/docs/api/java/util/Calendar.html


3
int hr=Time.valueOf(LocalTime.now()).getHours();
int minutes=Time.valueOf(LocalTime.now()).getMinutes();

ये फ़ंक्शन घंटे और मिनटों में अंतर मान लौटाएंगे।


1
डुप्लिकेट। यह दृष्टिकोण पहले से ही जेडी द्वारा उत्तर में कवर किया गया था ।
तुलसी बोर्क

क्या वह है java.sql.Time? निश्चित रूप से कोई कारण नहीं है कि जब आप मिल गए हैं तो उस पुरानी कक्षा को खेलने में लाएं java.time.LocalTime। आप ओवरकोम्प्लीकेट कर रहे हैं।
ओले वीवी

ऐसा लगता है कि getMinutes()इसमें पदावनत कर दिया गया है (मैं जावा 1.8 का उपयोग कर रहा हूं) और इसे बदल दिया गया हैCalendar.get(Calendar.MINUTE)
साल्टज 3

3

SimpleDateFormat का उपयोग करके मिनट और घंटे प्राप्त करने का एक और तरीका है।

SimpleDateFormat formatMinutes = new SimpleDateFormat("mm")
String getMinutes = formatMinutes.format(new Date())

SimpleDateFormat formatHours = new SimpleDateFormat("HH")
String getHours = formatHours.format(new Date())

FYI करें, बहुत परेशान करने वाली तारीख-समय की कक्षाएं जैसे कि java.util.Date, java.util.Calendarऔर java.text.SimpleDateFormatअब विरासत हैं , जावा 8 और बाद में निर्मित java.time कक्षाओं द्वारा दबा दी गई हैं । ओरेकल द्वारा ट्यूटोरियल देखें ।
बेसिल बोर्के

2

मैं एड जॉडा टाइम देखने की सलाह दूंगा। http://www.joda.org/joda-time/

मुझे अपनी मोटी परियोजना में एक और पुस्तकालय जोड़ने का डर था, लेकिन यह सिर्फ आसान और तेज और स्मार्ट और भयानक है। इसके अलावा, यह कुछ हद तक मौजूदा कोड के साथ अच्छा खेलता है।


1

हालांकि मैं ऐसा करने की सिफारिश नहीं करूंगा, लेकिन मुझे लगता है कि यह इंगित करने लायक है कि हालांकि java.util.Date पर कई विधियां हटा दी गई हैं, फिर भी वे काम करते हैं। तुच्छ परिस्थितियों में, उनका उपयोग करना ठीक हो सकता है। इसके अलावा, java.util.Calendar बहुत धीमा है, इसलिए GetMonth और DateYear पर उपयोगी रूप से त्वरित हो सकता है।


1
public static LocalTime time() {
    LocalTime ldt = java.time.LocalTime.now();

    ldt = ldt.truncatedTo(ChronoUnit.MINUTES);
    System.out.println(ldt);
    return ldt;
}

यह मेरे लिए काम करता है


0

import java.util.*आप कैलेंडर और फ़ॉर्मेटर क्लास का उपयोग करके मिनट और मिनट ले सकते हैं। Calendar cal = Calendar.getInstance()और Formatter fmt=new Formatter()प्रदर्शन घंटे और मिनट fmt.format("%tl:%M",cal,cal)और प्रिंट System.out.println(fmt) आउटपुट शो के लिए एक प्रारूप सेट करें10:12

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.