2012-02-14 12 views
5

मैं कोई लाभ नहीं हुआ निम्नलिखित की कोशिश की है:जोडाटाइम का उपयोग कर एक वर्ष में मुझे दिनों की संख्या कैसे मिल सकती है?

new Period(Years.ONE).getDays(); 

new Period(1, 0, 0, 000).getDays(); 

जवाब मैं चाहता हूँ स्पष्ट रूप से 365

उत्तर

8

आप किसी दिए गए वर्ष के लिए दिनों की वास्तविक संख्या चाहते हैं:

int year = 2012; 
LocalDate ld = new LocalDate(year,1,1); 
System.out.println(Days.daysBetween(ld,ld.plusYears(1)).getDays()); 
बेशक

, इस रिटर्न 365 या 366 ... सामान्य रूप से:।

int year = 1582; 
LocalDate ld = new LocalDate(year,1,1,GJChronology.getInstance()); 
System.out.println(Days.daysBetween(ld,ld.plusYears(1)).getDays()); 
// year 1582 had 355 days 
+0

यह भी काम करना चाहिए: '(नया लोकलडेट (वर्ष, 12, 31))। GetDayOfYear();' – jpstrube

12

है इस सवाल का जवाब आप चाहते हैं जाहिर है 365 नहीं है। यह या तो 365 या 366 है, आप अपने उदाहरण में लीप साल नहीं लेते हैं।

एक छलांग वर्ष का पता लगाना और एक कठिन कथन के साथ बस इसे कड़ी मेहनत करना किसी कारण से अस्वीकार्य होगा?

final DateTime dt = new DateTime(); 
final int daysInYear = dt.year().isLeap() ? 366 : 365; 

बेशक यह आप चालू वर्ष में दिनों की संख्या देना होगा, कैसे एक अलग वर्ष में दिनों की संख्या प्राप्त करने के तुच्छ है और पाठक के लिए एक व्यायाम।

2

नई दिनांक समय() साल() .toInterval() toDuration() getStandardDays()।।

3

tl; डॉ

java.time.Year.of(2017).length() 

का उपयोग java.time

Joda-Time परियोजना, अब maintenance mode में, java.time वर्गों के लिए प्रवास सलाह देता है।

java.time.Year कक्षा किसी विशेष वर्ष का प्रतिनिधित्व कर सकती है।

Year year = Year.of(2017); 

आप इस तरह के दिनों की संख्या में इसकी लंबाई के रूप में या क्या यह एक Leap Year या नहीं है कि वर्ष के बारे में जानकारी के लिए पूछताछ कर सकते हैं।

int countDaysInYear = year.length() ; 
boolean isLeapYear = year.isLeap() ; // ISO proleptic calendar system rules. 

java.time

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

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

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

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

  • Java SE 8 और SE 9 और बाद में
    • में निर्मित।
    • एक बंडल कार्यान्वयन के साथ मानक जावा एपीआई का हिस्सा।
    • जावा 9 कुछ मामूली विशेषताओं और सुधारों को जोड़ता है।
  • Java SE 6 और SE 7
    • java.time कार्यक्षमता की ज्यादातर ThreeTen-Backport में जावा 6 & से 7 वापस भेजा गया है।
  • Android
    • ThreeTenABP परियोजना adapts ThreeTen-backport विशेष रूप से (जैसा कि ऊपर उल्लेख) Android के लिए।
    • How to use ThreeTenABP… देखें।

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

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