दिलचस्प पोस्ट
निम्नलिखित वाक्यांशों का क्या अर्थ है सी ++: शून्य-, डिफ़ॉल्ट- और मूल्य-आरंभीकरण? एक संदर्भित संदर्भ क्या है? PHP के mysql_ फ़ंक्शंस नापसंद क्यों हैं? सी ++ 11 'ऑटो' कीवर्ड स्थिर सदस्यों के लिए काम क्यों नहीं करता? jqGrid डेटा के साथ पॉप्युलेट नहीं करता है SQL सर्वर में, मैं किसी दिए गए तालिका के लिए कैसे एक तालिका तालिका बनाऊं? applicationMusicPlayer वॉल्यूम सूचना कोर डेटा को स्वचालित रूप से मॉडल माइग्रेट करने के लिए मुझे क्या करना है? सीएसएस @ फ़ॉन्ट-चेहरे फ़ायरफ़ॉक्स के साथ काम नहीं कर रहा है, लेकिन क्रोम और आईई के साथ काम करना तालिका मूल्यों में MySQL INSERT .. बनाम INSERT तालिका में सेट करें डेटटाइम। ट्राई पर्स सदी नियंत्रण सी # गूगल द्वारा वर्णित त्रुटि संदेश दिखाने के लिए एंड्रॉइड एड्रॉइड टेक्स्ट डिजाइन करें स्ट्रिंगबइल्डर कैसे काम करता है? Enum के बीच अंतर और वक्तव्य निर्धारित करें टॉमकेट में जड़ में अपने आवेदन को नियोजित करना

कैसे चेक करें कि दिनांक वस्तु कल के बराबर है?

अभी मैं इस कोड का उपयोग कर रहा हूं

Calendar cal = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DATE) - 1, 12, 0, 0); //Sets Calendar to "yeserday, 12am" if(sdf.format(getDateFromLine(line)).equals(sdf.format(cal.getTime()))) //getDateFromLine() returns a Date Object that is always at 12pm {...CODE 

यह जांचने का एक आसान तरीका हो सकता है कि क्या getdateFromLine () द्वारा की गई तिथि कल की तारीख है। केवल तारीख मामलों, न कि समय यही कारण है कि मैं SimpleDateFormat का इस्तेमाल किया आपकी सहायता के लिए अग्रिम धन्यवाद!

Solutions Collecting From Web of "कैसे चेक करें कि दिनांक वस्तु कल के बराबर है?"

 Calendar c1 = Calendar.getInstance(); // today c1.add(Calendar.DAY_OF_YEAR, -1); // yesterday Calendar c2 = Calendar.getInstance(); c2.setTime(getDateFromLine(line)); // your date if (c1.get(Calendar.YEAR) == c2.get(Calendar.YEAR) && c1.get(Calendar.DAY_OF_YEAR) == c2.get(Calendar.DAY_OF_YEAR)) { 

यह 1 जनवरी जैसी तारीखों के लिए भी काम करेगा।

मैं ऐश किम से सहमत हूं कि जोडा-टाइम पुस्तकालय जाने का तरीका है यदि आप अपनी विवेक को संरक्षित करना चाहते हैं।

 import org.joda.time.DateTime; public static boolean dayIsYesterday(DateTime day) { DateTime yesterday = new DateTime().withTimeAtStartOfDay().minusDays(1); DateTime inputDay = day.withTimeAtStartOfDay(); return inputDay.isEqual(yesterday); } 

इस उदाहरण में, यदि दिनांक का समय कल का day है तो कल, कल dayIsYesterday(day) true वापस करेगा।

java.time

जावा 8 में निर्मित जावा। java.time फ्रेमवर्क का उपयोग करना

 LocalDate now = LocalDate.now(); //2015-11-24 LocalDate yesterday = LocalDate.now().minusDays(1); //2015-11-23 yesterday.equals(now); //false yesterday.equals(yesterday); //true 

आधिकारिक ओरेकल LocalDate ट्यूटोरियल राज्यों

तुलना के लिए बराबर विधि का उपयोग किया जाना चाहिए।

यदि आप LocalDateTime , ZonedDateTime , या OffsetDateTime ZonedDateTime जैसी वस्तुओं के साथ काम कर रहे हैं, तो आप LocalDate कन्वर्ट कर सकते हैं।

 LocalDateTime.now().toLocalDate(); # 2015-11-24 

Java.util.Date और .Calendar से बचें

स्वीकृत उत्तर तकनीकी रूप से सही है लेकिन इष्टतम से कम है Java.util.Date और .Calendar वर्ग कुख्यात कष्टप्रद हैं। उनसे बचें याडा -टाइम या नए java.time पैकेज (जावा 8 में) या तो का उपयोग करें।

समय क्षेत्र

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

दिन की शुरुआत समय क्षेत्र द्वारा परिभाषित की गई है। एक नया दिन पहले बर्लिन में मॉन्ट्रियल की तुलना में उभर आया है। इसलिए "आज" और "कल" ​​की परिभाषा के लिए समय क्षेत्र की आवश्यकता है।

Joda समय

जेडा-टाइम 2.3 में उदाहरण कोड

 DateTimeZone timeZone = DateTimeZone.forID( "Europe/Berlin" ); DateTime today = DateTime.now( timeZone ); 

कल निर्धारित करने का एक तरीका ऑब्जेक्ट्स LocalDate में कनवर्ट करना है एक अन्य तरीका, जो यहाँ दिखाया गया है, समय की अवधि के रूप में "कल" ​​का प्रतिनिधित्व करना है हम कल को परिभाषित करते हैं कि कल के पहले पल से चलते हुए लेकिन आज का पहला पल भी शामिल नहीं है। इस दृष्टिकोण को "आधे खुले" कहा जाता है, जहां शुरुआत समावेशी है और अंत अनन्य है

कल प्राप्त करने के लिए एक दिन घटाएं (या दिन पहले)।

 DateTime yesterdayStartOfDay = today.minusDays( 1 ).withTimeAtStartOfDay(); Interval yesterdayInterval = new Interval( yesterdayStartOfDay, today.withTimeAtStartOfDay() ); 

अपने लक्ष्य java.util.Date को एक Joda-Time DateTime ऑब्जेक्ट में बदलें। उस नए ऑब्जेक्ट के लिए समय क्षेत्र लागू करें, बजाय JVM के डिफ़ॉल्ट समय क्षेत्र को लागू करने के बजाय। तकनीकी तौर पर इस क्षेत्र में समय क्षेत्र अप्रासंगिक है, लेकिन समय क्षेत्र भी एक अच्छी आदत है।

 DateTime target = new DateTime( myJUDate, timeZone ); 

टेस्ट करें यदि कल कल के अंतराल के भीतर लक्ष्य भूमि।

 boolean isYesterday = yesterdayInterval.contains( target ); 

जाहिर है, आधे खुले समय के साथ यह दृष्टिकोण "कल" ​​से अधिक के साथ काम करता है, जैसे "इस सप्ताह", "पिछले महीने", और इसी तरह।

अपडेट किया गया: जोडा-टाइम परियोजना अब रखरखाव मोड में है। टीम जावा.टाइम कक्षाओं में प्रवास की सलाह देती है। Przemek द्वारा सही जवाब में java.time समाधान देखें।

कैलेंडर को स्थापित करने के बजाय यह प्रयास करें:

 public static void main(String[] args) { int DAY_IN_MILLIS = 1000 * 60 * 60 * 24; Date date = new Date(); SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yy"); String prevDate = dateFormat.format(date.getTime() - DAY_IN_MILLIS); String currDate = dateFormat.format(date.getTime()); String nextDate = dateFormat.format(date.getTime() + DAY_IN_MILLIS); System.out.println("Previous date: " + prevDate); System.out.println("Current date: " + currDate); System.out.println("Next date: " + nextDate); } 

यह आपको कैलेंडर के साथ आगे और पीछे ले जाने की अनुमति देनी चाहिए

तब आप आसानी से getDateFromLine (लाइन) की तुलना में प्रचलित मूल्य या आप जो भी चाहते हैं, उससे तुलना कर सकते हैं।

मैं सुझाव है कि आप जोड-टाइम का उपयोग करने पर विचार करें। यह जेडीके प्रसाद की तुलना में बेहतर है।

जब मैंने इस पद्धति का परीक्षण करने के लिए इस तरीके का उपयोग किया तो मुझे इसे थोड़ा भ्रमित मिला है

  Calendar now = new GregorianCalendar(2000, 1, 1); now.add(Calendar.DATE, -1); SimpleDateFormat format= new SimpleDateFormat("yyyy-MM-dd"); System.out.println(format.format(now.getTime())); 

मेरी उम्मीद है कि 1999-12-31 को प्रिंट करना है, लेकिन वास्तविक 2001-1-31 है, मुझे लगता है कि कैलेंडर.एड () केवल महीने में दिन के साथ सौदा करता है।

लेकिन वास्तविक त्रुटि मैं जिस तरह से कैलेंडर ऑब्जेक्ट बना रहा हूं कैलेंडर में, 0 के साथ शुरू होने वाला महीना, अब चर का मूल्य 2001-2-1 है, मैं इतना आत्म-अभिमान था क्योंकि इसे प्रिंट नहीं किया गया था। जब मैंने कुछ गलत पाया एक कैलेंडर बनाने का सही तरीका यह है:

  Calendar now = new GregorianCalendar(2000, Calendar.JANUARY, 1); 

कैलेंडर एक पूर्व सी # प्रोग्रामर के लिए बहुत अजीब था 🙁

यह लगभग कुछ ऐसा है:

  Calendar c1 = Calendar.getInstance(); Date d1 = new Date(/* control time */); c1.setTime(d1); //current date Calendar c2 = Calendar.getInstance(); int day1=c1.get(Calendar.DAY_OF_YEAR); int day2=c2.get(Calendar.DAY_OF_YEAR); //day2==day1+1