दिलचस्प पोस्ट
"पूर्णांक आकार = 10" क्या एक निरंतर अभिव्यक्ति उत्पन्न होती है? क्रोम और सफारी XSLT जावास्क्रिप्ट का उपयोग कर Google मानचित्र API v3 – सेट सीमा और केंद्र पायथन में कुंजीपटल इनर्रॉप्ट्रॉप को बिना प्रयास किए-को छोड़कर पोस्टग्रेएसक्यूएल क्रॉसस्टैब क्वेरी कई सीमांकक द्वारा शब्दों में एक स्ट्रिंग विभाजित करें Android फ़ोन में मॉनिटर नेटवर्क गतिविधि एंड्रॉइड: सूची निर्माण पर सूची आइटम को अक्षम कैसे करें लेन-देन-स्कॉप्ड कायमता संदर्भ और विस्तारित दृढ़ता संदर्भ में क्या अंतर है? मोंगोडीबी या अन्य दस्तावेज़ आधारित डेटाबेस सिस्टम का उपयोग कब किया जाए? आर में एक डेटा फ्रेम में एक कॉलम के उच्चतम मान को कैसे खोजें? पिक्सेल-परफेक्ट टकराव डिटेक्शन एंड्रॉइड jquery form.serialize और अन्य पैरामीटर MongoDB संग्रह में सभी कुंजी के नाम प्राप्त करें हैशमैप: एक कुंजी, एकाधिक मान

वर्तमान सप्ताह और महीने का पहला दिन कैसे प्राप्त करें?

मेरे पास मिलीसेकंड [1] में कई घटनाओं की तारीख है, और मैं जानना चाहता हूं कि कौन सी घटनाएं वर्तमान सप्ताह के भीतर हैं और वर्तमान माह में हैं, लेकिन मुझे पता नहीं है कि पहले दिन (दिन / महीना / वर्ष कैसे प्राप्त किया जाए) ) चल सप्ताह के लिए और उसे मिलीसेकंड में परिवर्तित कर दिया, महीने के पहले दिन के लिए समान।

[1]Since January 1, 1970, 00:00:00 GMT 

Solutions Collecting From Web of "वर्तमान सप्ताह और महीने का पहला दिन कैसे प्राप्त करें?"

मिलीसेकंड में इस सप्ताह:

 // get today and clear time of day Calendar cal = Calendar.getInstance(); cal.set(Calendar.HOUR_OF_DAY, 0); // ! clear would not reset the hour of day ! cal.clear(Calendar.MINUTE); cal.clear(Calendar.SECOND); cal.clear(Calendar.MILLISECOND); // get start of this week in milliseconds cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek()); System.out.println("Start of this week: " + cal.getTime()); System.out.println("... in milliseconds: " + cal.getTimeInMillis()); // start of the next week cal.add(Calendar.WEEK_OF_YEAR, 1); System.out.println("Start of the next week: " + cal.getTime()); System.out.println("... in milliseconds: " + cal.getTimeInMillis()); 

मिलीसेकंड में इस महीने:

 // get today and clear time of day Calendar cal = Calendar.getInstance(); cal.set(Calendar.HOUR_OF_DAY, 0); // ! clear would not reset the hour of day ! cal.clear(Calendar.MINUTE); cal.clear(Calendar.SECOND); cal.clear(Calendar.MILLISECOND); // get start of the month cal.set(Calendar.DAY_OF_MONTH, 1); System.out.println("Start of the month: " + cal.getTime()); System.out.println("... in milliseconds: " + cal.getTimeInMillis()); // get start of the next month cal.add(Calendar.MONTH, 1); System.out.println("Start of the next month: " + cal.getTime()); System.out.println("... in milliseconds: " + cal.getTimeInMillis()); 

सप्ताह के पहले दिन java.util.Calendar मदद से निर्धारित किया जा सकता है:

 Calendar calendar = Calendar.getInstance(); calendar.clear(); calendar.setTimeInMillis(timestamp); while (calendar.get(Calendar.DAY_OF_WEEK) > calendar.getFirstDayOfWeek()) { calendar.add(Calendar.DATE, -1); // Substract 1 day until first day of week. } long firstDayOfWeekTimestamp = calendar.getTimeInMillis(); 

महीने के पहले दिन निम्नानुसार निर्धारित किया जा सकता है:

 Calendar calendar = Calendar.getInstance(); calendar.clear(); calendar.setTimeInMillis(timestamp); while (calendar.get(Calendar.DATE) > 1) { calendar.add(Calendar.DATE, -1); // Substract 1 day until first day of month. } long firstDayOfMonthTimestamp = calendar.getTimeInMillis(); 

सुंदर वर्बोज़, हाँ


जावा 7 एक बेहतर तिथि और समय एपीआई ( JSR-310 ) के साथ आएगा। यदि आप अभी तक स्विच नहीं कर सकते हैं, तो आप जोडाटाइम का इस्तेमाल कर सकते हैं जो इसे कम जटिल बना देता है:

 DateTime dateTime = new DateTime(timestamp); long firstDayOfWeekTimestamp = dateTime.withDayOfWeek(1).getMillis(); 

तथा

 DateTime dateTime = new DateTime(timestamp); long firstDayOfMonthTimestamp = dateTime.withDayOfMonth(1).getMillis(); 

ध्यान!

 while (calendar.get(Calendar.DAY_OF_WEEK) > calendar.getFirstDayOfWeek()) { calendar.add(Calendar.DATE, -1); // Substract 1 day until first day of week. } 

अच्छा विचार है, लेकिन कुछ समस्या है: उदाहरण के लिए, मैं यूक्रेन और कैलेंडर से हूं। मेरे देश में फर्स्टडेऑफ़ वाईक () 2 (सोमवार) है। और आज 1 (रविवार) है इस मामले में कैलेंडर नहीं कहा जाता है।

तो, सही तरीके से ">" से "! =" बदलना है:

 while (calendar.get(Calendar.DAY_OF_WEEK) != calendar.getFirstDayOfWeek()) {... 

java.time

जावा 8 में जावा.टाइम फ्रेमवर्क और बाद में पुरानी जावा.टिल.डेट / । कैलेंडर्स कक्षाएं प्रदान करता है। पुरानी कक्षाएं परेशानी, भ्रामक और दोषपूर्ण साबित हुई हैं। उनसे बचें

जावा। टाइम फ्रेमवर्क अत्यधिक सफल जोडा-टाइम लाइब्रेरी से प्रेरित है, जिसे जेएसआर 310 द्वारा परिभाषित किया गया है, जो तीन-अतिरिक्त-अतिरिक्त परियोजना द्वारा विस्तारित है, और ट्यूटोरियल में समझाया गया है।

Instant

Instant क्लास यूटीसी में टाइमलाइन पर एक पल का प्रतिनिधित्व करता है।

जावा। टाइम फ्रेमवर्क में नैनोसेकंड का एक संकल्प है, या एक आंशिक सेकंड के 9 अंक हैं। मिलीसेकेंड एक भिन्नात्मक सेकंड के केवल 3 अंक हैं क्योंकि मिलीसेकंड रिजॉल्यूशन सामान्य है, java.time में एक आसान फैक्टरी विधि शामिल है।

 long millisecondsSinceEpoch = 1446959825213L; Instant instant = Instant.ofEpochMilli ( millisecondsSinceEpoch ); 

मिलीसेकंडसाइनपॉपः 1446959825213 तत्काल है: 2015-11-08T05: 17: 05.213Z

ZonedDateTime

वर्तमान सप्ताह और वर्तमान महीने पर विचार करने के लिए, हमें एक विशेष समय क्षेत्र लागू करने की आवश्यकता है।

 ZoneId zoneId = ZoneId.of ( "America/Montreal" ); ZonedDateTime zdt = ZonedDateTime.ofInstant ( instant , zoneId ); 

ज़ोनआईडी में: अमेरिका / मॉन्ट्रियल जो है: 2015-11-08T00: 17: 05.213-05: 00 [अमेरिका / मॉन्ट्रियल]

आधा खुला

समय-समय पर काम में, हम आमतौर पर समय की अवधि को परिभाषित करने के लिए आधे-खुले दृष्टिकोण का उपयोग करते हैं। अनन्य में समाप्त होने पर आरंभिक समावेशी है । सप्ताह (या महीने) के आखिरी विभाजन-दूसरे को निर्धारित करने की कोशिश करने के बजाय, हमें अगले सप्ताह (या महीने) का पहला पल मिलता है। इसलिए एक हफ्ते सोमवार के पहले पल से चलता है और आगे बढ़ता है लेकिन अगले सोमवार के पहले पल को शामिल नहीं किया जाता है।

चलो सप्ताह के पहले दिन, और आखिरी। जावा। टाइम फ्रेमवर्क में एक टूल शामिल है, विधि और ChronoField के with

डिफ़ॉल्ट रूप से, java.time आईएसओ 8601 मानक का उपयोग करता है। तो सोमवार को सप्ताह का पहला दिन (1) और रविवार को अंतिम (7) है।

 ZonedDateTime firstOfWeek = zdt.with ( ChronoField.DAY_OF_WEEK , 1 ); // ISO 8601, Monday is first day of week. ZonedDateTime firstOfNextWeek = firstOfWeek.plusWeeks ( 1 ); 

उस सप्ताह से चलता है: 2015-11-02T00: 17: 05.213-05: 00 [अमेरिका / मॉन्ट्रियल] 2015-11-09T00: 17: 05.213-05: 00 [अमेरिका / मॉन्ट्रियल]

ऊप्स! उन मूल्यों पर दिन के समय को देखो हम दिन का पहला पल चाहते हैं दिन का पहला पल हमेशा नहीं होता है 00:00:00.000 क्योंकि डेलाइट सेविंग टाइम (डीएसटी) या अन्य विसंगतियों इसलिए हमें जावा को हमारी ओर से समायोजन करना चाहिए। ऐसा करने के लिए, हमें LocalDate कक्षा के माध्यम से जाना चाहिए।

 ZonedDateTime firstOfWeek = zdt.with ( ChronoField.DAY_OF_WEEK , 1 ); // ISO 8601, Monday is first day of week. firstOfWeek = firstOfWeek.toLocalDate ().atStartOfDay ( zoneId ); ZonedDateTime firstOfNextWeek = firstOfWeek.plusWeeks ( 1 ); 

उस सप्ताह से चलता है: 2015-11-02T00: 00-05: 00 [अमेरिका / मॉन्ट्रियल] 2015-11-09 ते 00: 00-05: 00 [अमेरिका / मॉन्ट्रियल]

और महीने के लिए ही।

 ZonedDateTime firstOfMonth = zdt.with ( ChronoField.DAY_OF_MONTH , 1 ); firstOfMonth = firstOfMonth.toLocalDate ().atStartOfDay ( zoneId ); ZonedDateTime firstOfNextMonth = firstOfMonth.plusMonths ( 1 ); 

उस महीने से चलता है: 2015-11-01T00: 00-04: 00 [अमेरिका / मॉन्ट्रियल] 2015-12-01000: 00-05: 00 [अमेरिका / मॉन्ट्रियल]

YearMonth

यह देखने के लिए एक और तरीका है कि एक ही महीने में एक जोड़ी एक ही वर्ष में है, तो उसी YearMonth मान मूल्य की जांच करना है।

उदाहरण के लिए, यह thisZdt कि thisZdt और thatZdt दोनों ZonedDateTime ऑब्जेक्ट हैं:

 boolean inSameMonth = YearMonth.from( thisZdt ).equals( YearMonth.from( thatZdt ) ) ; 

मिलीसेकंड

मैं अपनी तिथि-समय के काम को मिलीसेकंडों-युग से-युग के खिलाफ करने की सलाह देता हूं। यह वास्तव में जिस तरह से तारीख समय कक्षाओं आंतरिक रूप से काम करते हैं, लेकिन हमारे पास एक कारण के लिए कक्षाएं हैं गणना-से-युग को संभालना अनाड़ी है क्योंकि मान मनुष्यों द्वारा समझने योग्य नहीं है इसलिए डिबगिंग और लॉगिंग मुश्किल और त्रुटि-प्रवण है। और, जैसा हमने पहले ही देखा है, विभिन्न प्रस्तावों को खेलने में हो सकता है; पुरानी जावा कक्षाएं और जोडा-टाइम लाइब्रेरी मिलिसेकंड का उपयोग करती हैं, जबकि पोस्टग्रेज़ जैसे डेटाबेस माइक्रोसेकेंड का उपयोग करते हैं, और अब जावा। समय नैनोसेकंड का उपयोग करता है।

क्या आप पाठ को बिट्स के रूप में संभालते हैं, या आप String , String और String जैसी कक्षाओं को ऐसे विवरणों को संभालते हैं?

लेकिन अगर आप जोर देते हैं, तो एक ZonedDateTime से Instant ZonedDateTime मिलते हैं, और उस से मिलीसेकेंडों-गणना-युग से मिलता है लेकिन ध्यान रखें कि इस कॉल से डेटा का नुकसान हो सकता है । किसी भी माइक्रोसॉन्ड्स या नैनोसेकंड जो आपके ZonedDateTime / Instant हो सकते हैं, काट दिया जाएगा (खोया)

 long millis = firstOfWeek.toInstant().toEpochMilli(); // Possible data loss. 

महीने के पहले दिन प्राप्त करने के लिए, बस एक Date प्राप्त करें और वर्तमान दिन को महीने के दिन 1 पर सेट करें। यदि आपको इसकी आवश्यकता है तो घंटे, मिनट, सेकंड और मिलिसेकंड को साफ़ करें

 private static Date firstDayOfMonth(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(Calendar.DATE, 1); return calendar.getTime(); } 

सप्ताह का पहला दिन एक ही बात है, लेकिन Calendar.DAY_OF_WEEK बजाय DAY_OF_WEEK का उपयोग करना

 private static Date firstDayOfWeek(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.set(Calendar.DAY_OF_WEEK, 1); return calendar.getTime(); } 

इस मामले में:

 // get today and clear time of day Calendar cal = Calendar.getInstance(); cal.clear(Calendar.HOUR_OF_DAY); <---- is the current hour not 0 hour cal.clear(Calendar.MINUTE); cal.clear(Calendar.SECOND); cal.clear(Calendar.MILLISECOND); 

इसलिए कैलेंडर। HOUR_OF_DAY 8, 9, 12, 15, 18 को चालू चलने का समय देता है। मुझे लगता है कि इस तरह की लाइन में बेहतर बदलाव होगा:

 c.set(Calendar.HOUR_OF_DAY,0); 

इस तरह दिन हमेशा 0 घंटे से शुरू होता है

आपको अपना नंबर जावा कैलेंडर में कनवर्ट करना चाहिए, जैसे:

  Calendar.getInstance().setTimeInMillis(myDate); 

वहां से, तुलना बहुत मुश्किल नहीं होनी चाहिए।

 import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.GregorianCalendar; import java.util.Scanner; /** This Program will display day for, 1st and last days in a given month and year @author Manoj Kumar Dunna Mail Id : manojdunna@gmail.com */ public class DayOfWeek { public static void main(String[] args) { String strDate = null; int year = 0, month = 0; Scanner sc = new Scanner(System.in); System.out.print("Enter YYYY/MM: "); strDate = sc.next(); Calendar cal = new GregorianCalendar(); String [] date = strDate.split("/"); year = Integer.parseInt(date[0]); month = Integer.parseInt(date[1]); cal.set(year, month-1, 1); System.out.println(new SimpleDateFormat("EEEE").format(cal.getTime())); cal.add(Calendar.MONTH, 1); cal.add(Calendar.DAY_OF_YEAR, -1); System.out.println(new SimpleDateFormat("EEEE").format(cal.getTime())); } } 
 Simple Solution: package com.util.calendarutil; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; public class CalUtil { public static void main(String args[]){ DateFormat df = new SimpleDateFormat("dd/mm/yyyy"); Date dt = null; try { dt = df.parse("23/01/2016"); } catch (ParseException e) { System.out.println("Error"); } Calendar cal = Calendar.getInstance(); cal.setTime(dt); cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek()); Date startDate = cal.getTime(); cal.add(Calendar.DATE, 6); Date endDate = cal.getTime(); System.out.println("Start Date:"+startDate+"End Date:"+endDate); } } 

मैंने इसके लिए कुछ विधियां बनाई हैं:

 public static String catchLastDayOfCurrentWeek(String pattern) { Calendar cal = Calendar.getInstance(); cal.set(Calendar.HOUR_OF_DAY, 0); cal.clear(Calendar.MINUTE); cal.clear(Calendar.SECOND); cal.clear(Calendar.MILLISECOND); cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek()); return calendarToString(cal, pattern); } public static String catchLastDayOfCurrentWeek(String pattern) { Calendar cal = Calendar.getInstance(); cal.set(Calendar.HOUR_OF_DAY, 0); cal.clear(Calendar.MINUTE); cal.clear(Calendar.SECOND); cal.clear(Calendar.MILLISECOND); cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek()); cal.add(Calendar.WEEK_OF_YEAR, 1); cal.add(Calendar.MILLISECOND, -1); return calendarToString(cal, pattern); } public static String catchTheFirstDayOfThemonth(Integer month, pattern padrao) { Calendar cal = GregorianCalendar.getInstance(); cal.setTime(new Date()); cal.set(Calendar.MONTH, month); cal.set(Calendar.DAY_OF_MONTH, 1); return calendarToString(cal, pattern); } public static String catchTheLastDayOfThemonth(Integer month, String pattern) { Calendar cal = GregorianCalendar.getInstance(); cal.setTime(new Date()); cal.set(cal.get(Calendar.YEAR), month, cal.getActualMaximum(Calendar.DAY_OF_MONTH)); return calendarToString(cal, pattern); } public static String calendarToString(Calendar calendar, String pattern) { if (calendar == null) { return ""; } SimpleDateFormat format = new SimpleDateFormat(pattern, LocaleUtils.DEFAULT_LOCALE); return format.format(calendar.getTime()); } 

आप यहां और भी देख सकते हैं।

 public static void main(String[] args) { System.out.println(getMonthlyEpochList(1498867199L,12,"Monthly")); } public static Map<String,String> getMonthlyEpochList(Long currentEpoch, int noOfTerms, String timeMode) { Map<String,String> map = new LinkedHashMap<String,String>(); int month = 0; while(noOfTerms != 0) { Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.MONTH, month); calendar.set(Calendar.DATE, calendar.getActualMinimum(Calendar.DAY_OF_MONTH)); Date monthFirstDay = calendar.getTime(); calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); Date monthLastDay = calendar.getTime(); map.put(getMMYY(monthFirstDay.getTime()), monthFirstDay + ":" +monthLastDay); month--; noOfTerms--; } return map; }