दिलचस्प पोस्ट
एक्सआई: स्कीमा स्थान का उपयोग क्या है? क्वेरी स्ट्रिंग में उपयोग के लिए ASP.Net URLEncode एम्पर्सस ORM का उपयोग करने के क्या फायदे हैं? मैं एक जीआईटी रिबेस के लिए एक मर्ज रणनीति कैसे चुनूं? टॉस्ट्रिंग () विधि कहां बुलाया जाता है जब मैं कोई ऑब्जेक्ट प्रिंट करता हूं? चेतावनी: हेडर सूचना को संशोधित नहीं किया जा सकता है – पहले से भेजा गया हैडर PHP: $ _SESSION के अंदर 'वस्तुओं' को संग्रहीत करना QueryString / GET / URL पैरामीटर पर सीमा क्या है क्या एक डाटासेट को ट्रेनिंग और वैल्यूशन सेट में विभाजित करने के लिए एक नियम है? यूआरएल से मिलान करने के लिए एक अच्छी नियमित अभिव्यक्ति क्या है? क्या HTML5 में अपना खुद का html टैग बनाने का एक तरीका है? PHP का उपयोग कर फ़ाइल डाउनलोड करने पर मजबूर होना अवलोकन के समय को सूचित करें जब आइटम में परिवर्तन होता है मैं एक पायथन प्रोग्राम कैसे चलाऊँ? Request.UrlReferrer null?

तिथि, घंटे और मिनट के साथ आईएसओ 8601 प्रारूप में वर्तमान क्षण कैसे प्राप्त करें?

मौजूदा पल की यू.एस.ओ 8601 फॉर्मेटेड प्रेजेंटेशन, यूटीसी प्राप्त करने का सबसे शानदार तरीका क्या है? इसे दिखना चाहिए: 2010-10-12T08:50Z

वेब के समाधान से एकत्रित समाधान "तिथि, घंटे और मिनट के साथ आईएसओ 8601 प्रारूप में वर्तमान क्षण कैसे प्राप्त करें?"

आप चाहते हैं कि किसी भी Date वस्तु को स्वरूपित करने के लिए SimpleDateFormat का प्रयोग करें:

 TimeZone tz = TimeZone.getTimeZone("UTC"); DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm'Z'"); // Quoted "Z" to indicate UTC, no timezone offset df.setTimeZone(tz); String nowAsISO = df.format(new Date()); 

ऊपर दिखाए गए अनुसार एक new Date() का उपयोग वर्तमान समय को प्रारूपित करेगा।

सिस्टम के लिए जहां डिफ़ॉल्ट समय क्षेत्र यूटीसी नहीं है:

 TimeZone tz = TimeZone.getTimeZone("UTC"); DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm'Z'"); df.setTimeZone(tz); String nowAsISO = df.format(new Date()); 

SimpleDateFormat उदाहरण को एक वैश्विक स्थिरता के रूप में घोषित किया जा सकता है, यदि बार-बार ज़रूरत हो, लेकिन सावधान रहें कि यह क्लास थ्रेड-सुरक्षित नहीं है। एकाधिक थ्रेड्स द्वारा समवर्ती रूप से एक्सेस किए जाने पर इसे सिंक्रनाइज़ किया जाना चाहिए।

संपादित करें: मैं कई अलग-अलग टाइम्स / दिनांक जोड़तोड़ करते समय जोडा टाइम पसंद करेंगे …
EDIT2: सही: setTimeZone स्ट्रिंग स्वीकार नहीं करता (पॉल द्वारा सही)

जावा 8:

 thisMoment = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mmX") .withZone(ZoneOffset.UTC) .format(Instant.now()); 

प्री जावा 8:

 thisMoment = String.format("%tFT%<tRZ", Calendar.getInstance(TimeZone.getTimeZone("Z"))); 

डॉक्स से :

24 घंटे की घड़ी के लिए 'R' समय स्वरूपित "% tH:% tM"
'F' आईएसओ 8601 पूर्ण तिथि "% tY-% tm-% td" के रूप में स्वरूपित है।

जावा 8 देशी

java.time जावा 8 के बाद से यह सरल बनाता है। और थ्रेड सुरक्षित

 ZonedDateTime.now().format( DateTimeFormatter.ISO_INSTANT ) 

परिणाम: 2015-04-14T11:07:36.639Z

आप LocalDateTime या LocalDateTime जैसे लाइटर Temporal का उपयोग करने के लिए परीक्षा ले सकते हैं, लेकिन उनके पास फ़ॉर्मेटर समर्थन या टाइम ज़ोन डेटा का अभाव है केवल ZonedDateTime बॉक्स के बाहर काम करता है।

ZonedDateTime और DateTimeFormatter के विकल्प / संचालन ट्यूनिंग या चेनिंग करके, आप एक निश्चित डिग्री के लिए आसानी से समयक्षेत्र और सटीकता को नियंत्रित कर सकते हैं:

 ZonedDateTime.now( ZoneId.of( "Europe/Paris" ) ) .truncatedTo( ChronoUnit.MINUTES ) .format( DateTimeFormatter.ISO_DATE_TIME ) 

परिणाम: 2015-04-14T11:07:00+01:00[Europe/Paris]

परिष्कृत आवश्यकताओं, जैसे कि सेकंड भाग को निकालने के लिए, कस्टम प्रारूप या कस्टम पोस्ट प्रक्रिया द्वारा अभी भी सेवा की जानी चाहिए।

जावा 6 और 7 के लिए, आप जावा के समय-समय पर बैकपोर्ट देख सकते हैं जैसे थ्रीटीन-बैकपोर्ट , जिसमें एक एंड्रॉइड पोर्ट भी है दोनों जोडा की तुलना में हल्का हैं, और जोडा के अनुभव से सीख चुके हैं – esp विचार करते हुए कि java.time Joda के लेखक द्वारा डिजाइन किया गया है।

जूडाटाइम का उपयोग करें

आईओओ 8601 कैलेंडर प्रणाली जोडा-टाइम में डिफ़ॉल्ट कार्यान्वयन है

यहां जोडाटाईम फॉर्मेटर के लिए डॉक्टर है

संपादित करें:

यदि आप जोड़ना नहीं चाहते हैं या यदि आपको उपरोक्त लाइब्रेरी जोड़ने का मान नहीं दिखता है तो आप बस निर्मित SimpleDateFormat क्लास में आवश्यक प्रारूप को तिथि स्वरूपित करने के लिए उपयोग कर सकते हैं

जैसा कि सुझाव दिया गया @ जोछिम सॉर

 DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mmZ"); String nowAsString = df.format(new Date()); 

commons-lang3 से उपयोगी होता है, उदाहरण के लिए: DateFormatUtils.ISO_DATETIME_FORMAT

अगर आप जोडाटाइम को शामिल करना नहीं चाहते हैं (जैसा कि यह अच्छा है)

 javax.xml.bind.DatatypeConverter.printDateTime( Calendar.getInstance(TimeZone.getTimeZone("UTC")) ); 

जो की एक स्ट्रिंग देता है:

 2012-07-10T16:02:48.440Z 

जो मूल अनुरोध से कुछ अलग है लेकिन अभी भी आईएसओ -8601 है।

आईएसओ 8601 में शामिल हो सकते हैं सेकंड देखें http://en.wikipedia.org/wiki/ISO_8601#Times

इसलिए कोड होना चाहिए

 DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); 

Joda समय

अपडेट: जौडा टाइम परियोजना अब रखरखाव मोड में है , साथ ही टीम को जावा । टाइम कक्षाओं में प्रवास करने की सलाह दी गई है। जावा 6 और 7 के लिए, थ्रीटीन-बैकपोर्ट परियोजना देखें, जो एंड्रॉइड के लिए तीन टाएंबैप परियोजना में अनुकूलित है।

Joda-Time पुस्तकालय का उपयोग करना …

 String output = new DateTime( DateTimeZone.UTC ).toString() ; 

यह धागा-सुरक्षित है जोडा-टाइम मौजूदा वस्तुओं को बदलने की बजाय नई अपरिवर्तनीय वस्तुओं बनाता है।

यदि आप वाकई सेकंड के बिना किसी प्रारूप के लिए पूछना चाहते हैं, तो मिनटों को हल करने के लिए, फिर Joda-Time में कई अन्य अंतर्निहित फ़ॉर्मेटरों में से एक का उपयोग करें

 DateTime now = new DateTime( DateTimeZone.UTC ) ; String output = ISODateTimeFormat.dateHourMinute.print( now ) ; 

java.time

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

इस सही जवाब java.time के लिए , Sheepy द्वारा देखें।

जावा संस्करण 7 के लिए

आप ओरेकल दस्तावेज का अनुसरण कर सकते हैं: http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

एक्स – आईएसओ 8601 समय क्षेत्र के लिए प्रयोग किया जाता है

 TimeZone tz = TimeZone.getTimeZone("UTC"); DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssX"); df.setTimeZone(tz); String nowAsISO = df.format(new Date()); System.out.println(nowAsISO); DateFormat df1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssX"); //nowAsISO = "2013-05-31T00:00:00Z"; Date finalResult = df1.parse(nowAsISO); System.out.println(finalResult); 

जावा 8 के अनुसार आप बस कर सकते हैं:

 Instant.now().toString(); 

आप आईओएस 8601 के लिए निम्न पद्धति yyyy-MM-dd'T'HH:mm:ssXXX के साथ जावा के सरलडेटफ़ॉर्मेट का उपयोग कर सकते हैं।

नमूना कोड: (सभी उपलब्ध समय क्षेत्रों के लिए सूचियां)

 for (String timeZone : TimeZone.getAvailableIDs()) { DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX"); dateFormat.setTimeZone(TimeZone.getTimeZone(timeZone)); String formatted = dateFormat.format(new Date()); System.out.print(formatted); if (formatted.endsWith("Z")) { // These time zone's have offset of '0' from GMT. System.out.print("\t(" + timeZone + ")"); } System.out.println(); } 

आप उपयोग कर सकते हैं:

TimeZone.getDefault ()

डिफ़ॉल्ट वीएम टाइमज़ोन के लिए और यहां पर

आप 'Z' साथ समाप्त होने वाले कुछ समय क्षेत्रों के लिए तिथि का समय देख सकते हैं। इन समय क्षेत्रों में जीएमटी से '0' की ऑफसेट है

अधिक जानकारी यहां पाई जा सकती है ।

यहां एक पूरी कक्षा का अनुकूलन किया गया है ताकि "अब ()" का उपयोग करने के लिए कुछ और नहीं किया जाए जिससे उसे करना पड़े।

 public class Iso8601Util { private static TimeZone tz = TimeZone.getTimeZone("UTC"); private static DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm'Z'"); static { df.setTimeZone(tz); } public static String now() { return df.format(new Date()); } } 

फिर भी, जोडा-टाइम केवल विस्तारित प्रारूप का समर्थन करता है: "2015-12-09T00: 22: 42.930Z" बुनियादी नहीं: "2015120 9 टी 002242.930Z" … हम जावा सरलडेटफ़ॉर्मेट के साथ प्रारूपों की एक सूची का परीक्षण कर सकते हैं।

मेरा मानना ​​है कि सबसे आसान तरीका पहले तत्काल करने के लिए और फिर स्ट्रिंग की तरह है:

 String d = new Date().toInstant().toString(); 

जिसके परिणामस्वरूप:

2017-09-08T12:56:45.331Z

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

 private static final String GMT = "GMT"; private static final String DATE_FORMAT_ISO = "yyyyMMdd'T'HHmmss"; public static Calendar isoToCalendar(final String inputDate) { Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone(GMT)); try { SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT_ISO, Locale.US); dateFormat.setTimeZone(TimeZone.getTimeZone(GMT)); Date date = dateFormat.parse(inputDate); calendar.setTime(date); } catch (ParseException e) { Log.e("TAG",e.getMessage()); } return calendar; } 

याद रखें: दिनांक वर्ग को टाइमज़ोन के अस्तित्व के बारे में नहीं पता है। इस कारण से, यदि आप एक तारीख को डिबग करते हैं, तो आप हमेशा अपने वर्तमान समयक्षेत्र के लिए तिथि देखते हैं

 private static String getCurrentDateIso() { // Returns the current date with the same format as Javascript's new Date().toJSON(), ISO 8601 DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", Locale.US); dateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); return dateFormat.format(new Date()); } 

इसे इस्तेमाल करे,

 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSSZ"); String date=sdf.format (new Date() ); 

इसके आईएसओ 8601 प्रारूप के लिए