java - जावा:तिथि से महीना पूर्णांक प्राप्त करें




date calendar (7)

यदि आप जावा 8 दिनांक एपीआई का उपयोग करते हैं, तो आप इसे सीधे एक पंक्ति में प्राप्त कर सकते हैं!

LocalDate today = LocalDate.now();
int month = today.getMonthValue();

मैं महीने को किसी ऑब्जेक्ट ( java.util.Date ) से पूर्णांक के रूप में कैसे प्राप्त करूं?


java.util.Date date= new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int month = cal.get(Calendar.MONTH);

Date mDate = new Date(System.currentTimeMillis());
mDate.getMonth() + 1

लौटाया गया मान 0 से शुरू होता है, इसलिए आपको परिणाम में एक जोड़ना चाहिए।


tl; डॉ

myUtilDate.toInstant()                          // Convert from legacy class to modern. `Instant` is a point on the timeline in UTC.
          .atZone(                              // Adjust from UTC to a particular time zone to determine date. Renders a `ZonedDateTime` object. 
              ZoneId.of( "America/Montreal" )   // Better to specify desired/expected zone explicitly than rely implicitly on the JVM’s current default time zone.
          )                                     // Returns a `ZonedDateTime` object.
          .getMonthValue()                      // Extract a month number. Returns a `int` number.

java.time विवरण

जावाटाइम का उपयोग करने के लिए ऑर्टोमाला लोकनी द्वारा उत्तर सही है। और आपको java.time का उपयोग करना चाहिए क्योंकि यह पुराने java.util.Date/. कैलेंडर कैलेंडर पर एक बड़ा सुधार है। जावा.टाइम पर ओरेकल ट्यूटोरियल देखें।

मैं java.util.Date के संबंध में java.time का उपयोग करने के तरीके के बारे में कुछ कोड जोड़ूंगा, जब आप ताजा कोड से शुरू कर रहे हों।

संक्षेप में जावा.टाइम का उपयोग करना ... यूटीसी में टाइमलाइन पर एक क्षण एक क्षण है। ZoneId प्राप्त करने के लिए एक समय क्षेत्र ( ZoneId ) लागू करें।

Month वर्ग सामान्य रूप से एक महीने का प्रतिनिधित्व करने के लिए एक परिष्कृत enum है। उस enum में एक स्थानीय नाम प्राप्त करने जैसे आसान तरीके हैं। और बाकी आश्वासन दिया कि java.time में महीना संख्या jane.util.Date/.Calendar में शून्य-आधारित बकवास (0-11) नहीं है, 1-12 है।

वर्तमान दिनांक-समय प्राप्त करने के लिए, समय क्षेत्र महत्वपूर्ण है। किसी भी समय तिथि दुनिया भर में समान नहीं है। इसलिए माह की समाप्ति / शुरुआत के करीब महीना दुनिया भर में समान नहीं है।

ZoneId zoneId = ZoneId.of( "America/Montreal" );  // Or 'ZoneOffset.UTC'.
ZonedDateTime now = ZonedDateTime.now( zoneId );
Month month = now.getMonth(); 
int monthNumber = month.getValue(); // Answer to the Question.
String monthName = month.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH );

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

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

Joda-Time प्रोजेक्ट, अब रखरखाव मोड में , java.time कक्षाओं में माइग्रेशन की सलाह देता है।

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

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

जावा.टाइम कक्षाएं कहां प्राप्त करें?

  • जावा एसई 8 , जावा एसई 9 , जावा एसई 10 , और बाद में
    • निर्मित।
    • एक बंडल कार्यान्वयन के साथ मानक जावा एपीआई का हिस्सा।
    • जावा 9 कुछ मामूली विशेषताओं और फिक्सेस जोड़ता है।
  • जावा एसई 6 और जावा एसई 7
    • जावाटाइम की अधिकांश कार्यक्षमता को ThreeTen-Backport में जावा 6 और 7 में बैक-पोर्ट किया गया है।
  • Android
    • जावा.टाइम कक्षाओं के एंड्रॉइड बंडल कार्यान्वयन के बाद के संस्करण।
    • पहले एंड्रॉइड (<26) के लिए, ThreeTenABP प्रोजेक्ट थ्रीटेन-बैकपोर्ट (ऊपर उल्लिखित) को अपनाने वाला है । देखें थ्रीटेबैप का उपयोग कैसे करें ...।

ThreeTen-Extra प्रोजेक्ट अतिरिक्त कक्षाओं के साथ जावा.टाइम बढ़ाता है। यह परियोजना java.time के संभावित भविष्य के जोड़ों के लिए एक सिद्ध भूमि है। आपको यहां कुछ उपयोगी कक्षाएं मिल सकती हैं जैसे Interval , YearWeek , YearQuarter , more


Joda समय

वैकल्पिक रूप से, Joda-Time DateTime क्लास के साथ।

//convert date to datetime
DateTime datetime = new DateTime(date);
int month = Integer.parseInt(datetime.toString("MM"))

... या ...

int month = dateTime.getMonthOfYear();

जावा.टाइम (जावा 8)

आप Java 8 में java.time पैकेज का भी उपयोग कर सकते हैं और अपने java.util.Date ऑब्जेक्ट को java.time.LocalDate ऑब्जेक्ट में कनवर्ट कर सकते हैं और फिर getMonthValue() विधि का उपयोग करें।

Date date = new Date();
LocalDate localDate = date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
int month = localDate.getMonthValue();

ध्यान दें कि महीने के मूल्य 1 से 12 तक दिए गए हैं, जो adarshr के उत्तर में cal.get cal.get(Calendar.MONTH) विपरीत हैं जो 0 से 11 के मान देता है।

लेकिन जैसा कि बेसिल बोर्के ने टिप्पणियों में कहा था, पसंदीदा तरीका है कि LocalDate::getMonth विधि के साथ एक Month LocalDate::getMonth ऑब्जेक्ट प्राप्त करना।


प्रत्येक तिथि को बदलने के बजाय, आप निम्न कोड का उपयोग करते हैं

long difference = (sDt4.getTime() - sDt3.getTime()) / 1000;
System.out.println(difference);

और परिणाम देखें:

1




java date calendar