java - सरस - मोटापा कम करने के घरेलू उपाय




जावा: तिथि घटाने का सबसे आसान तरीका (4)

जावा 8 तारीख एपीआई या जोडा का उपयोग करें, नए आविष्कारों की आवश्यकता नहीं है।

आप यहां कुछ उदाहरण पा सकते हैं: http://examples.javacodegeeks.com/core-java/java-8-datetime-api-tutorial/

मैंने दो फ़ील्ड के साथ एक क्लास बनाया है जो कि तिथियां, start_date और date_passed । मैं जावा में सबसे अच्छे तरीके से एक YYYY MM DD प्रारूप में तारीखों पर शोध कर रहा हूं जो कि आसान तिथि घटाव के लिए अनुमति देता है, और एक तिथि "मेकअप" करने की क्षमता, उदाहरण के लिए भविष्य में कहते हैं।

मैं क्या करना चाहूँगा का उदाहरण ...

library.circulate_book("Chemistry", **start date here**) //actual date or random date
library.pass_book("Chemistry", **Date Passed here**) //random date such as 5 days after start date
int days_had = Date_Passed - start_date

अब तक, मुझे कैलेंडर और दिनांक कक्षाओं का उपयोग करते हुए तारीखों को प्रारूपित करने के लिए बहुत सारे तरीके मिल गए हैं, लेकिन अभी तक ऐसा कोई ऐसा ढूंढना नहीं है जो ऐसा लगता है कि यह अधिकांश तिथियों को स्ट्रिंग्स के रूप में समाप्त करने के लिए काम करेगा। कोई सुझाव / छोटे उदाहरण काफी सराहना कर रहे हैं! साथ ही, उदाहरणों के लिए कोई भी लिंक कमाल का होगा!


यदि आप पुराने जावा के साथ फंस रहे हैं तो आप सरलडेट फ़ार्मेट का उपयोग कर सकते हैं।

    //For substraction
    long differenceInMillis = date1.getTime() - date2.getTime();

    //Date Format
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy MM dd");
    String dateAsString = dateFormat.format(date1); //To get a text representation
    Date dateParsed = dateFormat.parse(dateAsString); //To get it back as date

जावा -8 में ऐसा करने का सबसे अच्छा तरीका तुलसी Bourque का दोषपूर्ण जवाब नहीं है, लेकिन यह दृष्टिकोण:

String startDate = "2016 01 02";
String passedDate = "2016 02 29";

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy MM dd");
LocalDate date1 = LocalDate.parse(startDate, formatter);
LocalDate date2 = LocalDate.parse(passedDate, formatter);

long elapsedDays = ChronoUnit.DAYS.between(date1, date2);
System.out.println(elapsedDays); // 58 (correct)

java.time.Period.getDays() का सुझाया उपयोग खतरनाक और अक्सर गलत है जैसे ही बीत गए अवधि एक माह से अधिक हो। संपूर्ण Period P1M27D है, इसलिए यह कोड प्रभावी रूप से केवल बीते दिनों की आंशिक राशि (एक बीता हुआ माह भी है) से पूछता है:

System.out.println(Period.between(date1, date2).getDays()); // 27 (WRONG!!!)

कक्षाओं का उपयोग करते हुए एक संतोषजनक समाधान java.util.Date , GregorianCalendar इत्यादि। आप टेकेथराइट्रिक्स के जवाब का उपयोग कर सकते हैं, लेकिन इस तथ्य से अवगत होना चाहिए कि बीते दिनों की गणना की गणना java.util.Date के उप-भाग-भागों के कारण भिन्न हो सकती है और दिन-रोशनी- बचत स्विच (जहां घड़ी दुनिया के कई हिस्सों में एक घंटे से कूदता है)।

साइड नोट: कम से कम 8 बाहरी पुस्तकालय आपकी समस्या के अच्छे उत्तर भी देते हैं। लेकिन मुझे लगता है कि आपका सरल उपयोग-केस अतिरिक्त पुस्तकालय के एम्बेडिंग को सही नहीं करता है, जब तक आप अभी तक जावा -8 पर नहीं हैं कोई भी वैकल्पिक समाधान दो तिथियों के बीच बीत गए दिनों को कैसे गिनने के लिए जावा -8 की तुलना में आसान नहीं होगा - केवल इसी तरह की। और जब से तुलसी बार्के के जावा -8-संबंधित उत्तर स्वीकार किए जाते हैं, तो मैं मानता हूं कि आप वाकई जावा -8 पर हैं इसलिए मैंने जवाब दिया कि आपकी समस्या को अन्य पुस्तकालयों के साथ कैसे हल किया जाए।


पदच्छेद

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

दिनांक के समय मानों को स्ट्रिंग्स के रूप में सोचने से रोकें, जो आपको पागल कर देगा। हम अपने कोड में डेट-टाइम ऑब्जेक्ट्स के साथ काम करते हैं; हम उस तिथि-समय ऑब्जेक्ट के स्ट्रिंग प्रस्तुति का उपयोग करते हुए उपयोगकर्ताओं या अन्य ऐप्स के साथ डेटा विनिमय करते हैं

जावा 8 और बाद में, जावा। टाइम फ्रेमवर्क का उपयोग करें। ट्यूटोरियल देखें

आप केवल एक तारीख चाहते हैं, दिन के बिना, इसलिए हम स्थानीय LocalDate क्लास का उपयोग कर सकते हैं।

यह कायरता डबल-बृहदान्त्र वाक्यविन्यास एक विधि संदर्भ है , यह कहने का एक तरीका है कि अन्य कोड द्वारा किस पद्धति को कॉल किया जाना चाहिए।

String input = "2015 01 02";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern ( "yyyy MM dd" );
LocalDate localDate = formatter.parse ( input , LocalDate :: from );

घटाए गए तिथियां

StackOveflow.com पर कई बार इसे संबोधित किया गया है उदाहरण के लिए, जावा कैलेंडर का उपयोग करते हुए दिनांक से एक्स दिन कैसे घटाना है? । विवरण के लिए, अन्य उत्तर देखें जैसे कि यह मेरे द्वारा और यह अधिक जानकारी के लिए मेरे द्वारा । युक्ति: "समाप्त" एक प्रमुख खोज शब्द है

संक्षेप में, कई मानक दिनों, महीनों और वर्षों को परिभाषित करने के लिए एक Period का उपयोग करें।

LocalDate weekLater = localDate.plusDays ( 7 );
Period period = Period.between ( localDate , weekLater );
Integer daysElapsed = period.getDays ();

डंप करने के लिए कंसोल

System.out.println ( "localDate: " + localDate + " to " + weekLater + " in days: " + daysElapsed );

स्थानीय दिनांक: 2015-01-02 से 2015-01-09 दिनों में: 7

ध्यान दें कि Period पूरे दिन के साथ ही काम करती है, वह है, समय-प्रतिदिन के बिना केवल-तिथि मान इस प्रश्न के लिए हमें यहां वही जरूरत है, इसलिए काम किया। यदि आपके पास दिनांक-समय के मान ( ZonedDateTime ऑब्जेक्ट्स) थे, तो लिंक से जुड़े प्रश्न / उत्तर में ऊपर दिए गए तीन-अतिरिक्त- परियोजना के Days वर्ग का उपयोग करें।







subtract