एंड्रॉइड में वर्तमान समय और दिनांक कैसे प्राप्त करें


1107

मैं एंड्रॉइड ऐप में वर्तमान समय और दिनांक कैसे प्राप्त कर सकता हूं?


3
43 जवाब! जबकि उनमें से कई अच्छे थे जब उन्हें लिखा गया था, 2018 में उपयोग करने का अच्छा जवाब यहां है
ओले वीवी

जवाबों:


1308

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

import java.util.Calendar

Date currentTime = Calendar.getInstance().getTime();

आपकी ज़रूरत की हर चीज़ के लिए कैलेंडर में बहुत सारी चीज़ें हैं।

संपादित करें: कैलेंडर क्लास प्रलेखन की
जाँच करें


14
+1 यह बहुत मददगार था। नया होने के नाते यह उन सभी छोटी चिड़ियों के लिए है जिनकी हमें आवश्यकता है ... मैं जूलियन तिथि प्राप्त करने के लिए कैलेंडर का उपयोग कर रहा हूं। मिलीसेकंड प्राप्त करने की तुलना में बहुत आसान है और अगर मूल्य आज के बराबर है;)
बिलोट

9
लेकिन यह तारीख और समय कहाँ से खींचता है? Android डिवाइस ही सेटिंग?
काइल क्लेग

12
@ केइल हाँ, यह डिवाइस टाइम सेटिंग्स / टाइमज़ोन पर आधारित है। डॉक से उद्धरण : "कैलेंडर की getInstance पद्धति एक कैलेंडर लौटाती है जिसका लोकेल सिस्टम सेटिंग्स पर आधारित है और जिसका समय क्षेत्र वर्तमान तिथि और समय के साथ आरम्भ किया गया है" - (वर्ग प्रलेखन में पहली नमूना रेखा के ऊपर)।

3
+1 इस समाधान में मिलीसेकंड सटीक है, बस मुझे जो चाहिए।
इगोर ज़ेलया

42
जैसा कि @adamdport कहता है, यह वास्तव में सवाल का जवाब नहीं देता ... Calendar.getInstance().getTime()या Calendar.getInstance().getTimeInMillis()काम करेगा।
akousmata

487

आप android.text.format.Time का उपयोग कर सकते हैं ( लेकिन अब नीचे नहीं देखना चाहिए !) :

Time now = new Time();
now.setToNow();

ऊपर दिए गए संदर्भ से:

टाइम क्लास java.util.Calendar और java.util.GregorianCerendar कक्षाओं के लिए एक तेज़ प्रतिस्थापन है। समय वर्ग का एक उदाहरण समय में एक क्षण का प्रतिनिधित्व करता है, दूसरी सटीकता के साथ निर्दिष्ट होता है।


नोट 1: मुझे यह उत्तर लिखे हुए कई साल हो चुके हैं, और यह एक पुराने, एंड्रॉइड-विशिष्ट और अब पदावनत वर्ग के बारे में है। Google अब कहता है कि "[t] उसकी कक्षा में कई समस्याएँ हैं और यह अनुशंसित है कि इसके बजाय ग्रेगोरियन कैलेन्डर का उपयोग किया जाता है"।


नोट 2: भले ही Timeकक्षा में एक toMillis(ignoreDaylightSavings)विधि है, यह केवल उन तरीकों को पारित करने की सुविधा है जो मिलीसेकंड में समय की अपेक्षा करते हैं। समय मूल्य केवल एक सेकंड के लिए सटीक है ; मिलीसेकंड हिस्सा हमेशा होता है 000। यदि आप एक लूप में करते हैं

Time time = new Time();   time.setToNow();
Log.d("TIME TEST", Long.toString(time.toMillis(false)));
... do something that takes more than one millisecond, but less than one second ...

परिणामी अनुक्रम उसी मूल्य को दोहराएगा, जैसे कि 1410543204000, जब तक कि दूसरा दूसरा शुरू नहीं हो जाता, जिस समय 1410543205000वह दोहराना शुरू कर देगा।


2
@InsanityOnABun और मुहम्मद बाबर। नहीं नहीं नहीं। डॉक्स का कहना है कि "दूसरी सटीकता के साथ निर्दिष्ट" यहां तक ​​कि सबसे सरल परीक्षण (लूप में वर्तमान समय प्राप्त कर रहा है, मेमिलिस, और लॉगिंग / रिजल्ट को प्रिंट करना) आपको दिखाएगा कि परिणामी समय में मिलीसेकंड भाग के रूप में 000 है!
टूलमेकरसेव

3
@ आईगोरजेलया यदि आप मिलीसेकंड सटीकता चाहते हैं, तो आप दिन के समय के बजाय, संभवतः अंतराल समय कर रहे हैं। एंड्रॉइड डॉक्स SystemClock.uptimeMillis()अंतराल समय के लिए सलाह देते हैं । चूँकि जो सबसे अधिक अंतर्निहित फ़ंक्शन उपयोग करते हैं, इसके लिए सभी उपकरणों पर अच्छी तरह से लागू होने के लिए मजबूत प्रेरणा है। SystemClock में चर्चा देखें ... यदि आप चाहते हैं कि दिन के समय के साथ, ऐप के onResume में, यह दोनों पढ़ें, और Time / setToNow / toMillis। उन दोनों के बीच अंतर को याद रखें।
टूलमेकरसेव

टाइम क्लास का उपयोग न करें । यह भविष्य में हटा दिया जाएगा और इसके साथ कई मुद्दे हैं।
सैंडी चैपमैन

1
> इस वर्ग को एपीआई स्तर 22 में पदावनत किया गया था। इसके बजाय ग्रेगोरियन कैलेन्डर का उपयोग करें। यहां
Neo

दरअसल, GregorianCalendarजावा में और बाद में एंड्रॉइड में java.time क्लासेस द्वारा विशेष रूप से दबाया गया था ZonedDateTime। पहले एंड्रॉइड के लिए, थ्रीटेन-बैकपोर्ट और थ्रीटेनबप प्रोजेक्ट देखें।
तुलसी बॉर्क

365

यदि आप किसी विशिष्ट पैटर्न में दिनांक और समय प्राप्त करना चाहते हैं, तो आप निम्नलिखित का उपयोग कर सकते हैं:

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault());
String currentDateandTime = sdf.format(new Date());

या,

दिनांक :

String currentDate = new SimpleDateFormat("dd-MM-yyyy", Locale.getDefault()).format(new Date());

समय:

String currentTime = new SimpleDateFormat("HH:mm:ss", Locale.getDefault()).format(new Date());

यह यूटीसी में समय देगा, टाइमजोन को अपनाना चाहिए।
एंड्रास बालाज़ लज्था

10
अगर प्रदर्शन एक मुद्दा है तो खबरदार, SimpleDateFormat समस्याग्रस्त हो सकता है। मेरे ऐप में मेरे पास एक कस्टम दृश्य था जिसमें लगभग 20 एचएच: एमएम लेबल थे जो विशिष्ट समय (मिलीसेकंड धारण करने वाले लंबे पूर्णांक) का प्रतिनिधित्व करते थे, और एक समान संख्या में ड्रॉबल संसाधन। प्रारंभिक परीक्षण से पता चला कि बातचीत उतनी तरल नहीं थी जितनी मैं चाहता था। जब मैंने onDraw () को प्रोफाइल किया तो मैंने पाया कि सिंपलटाइमफॉर्म कॉल 80% समय ले रहा था। वास्तव में, मैं इस पृष्ठ को एक अधिक कुशल फ़ॉर्मेटर की खोज के भाग के रूप में और कैलेंडर्स, आदि के बारे में अधिक जानने के लिए पढ़ रहा हूं
विलियम टी। मल्लार्ड

3
हां, लेकिन अब नहीं। मुझे इस बात का अहसास नहीं था कि इसमें ओवरहेड शामिल है और यह मान लिया है कि यह एक बहुत ही बड़ा पोजो था।
विलियम टी। मलार्ड

32
संक्षेप में:String currentDateandTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
प्रतीक बुटानी

4
आप sdf.setTimeZone(TimeZone.getDefault())बीच में डाल सकते हैं
हार्वे

231

उन लोगों के लिए जो एक अनुकूलित प्रारूप पसंद कर सकते हैं, आप इसका उपयोग कर सकते हैं:

DateFormat df = new SimpleDateFormat("EEE, d MMM yyyy, HH:mm");
String date = df.format(Calendar.getInstance().getTime());

जबकि आपके पास DateFormat पैटर्न हो सकते हैं जैसे:

"yyyy.MM.dd G 'at' HH:mm:ss z" ---- 2001.07.04 AD at 12:08:56 PDT
"hh 'o''clock' a, zzzz" ----------- 12 o'clock PM, Pacific Daylight Time
"EEE, d MMM yyyy HH:mm:ss Z"------- Wed, 4 Jul 2001 12:08:56 -0700
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"------- 2001-07-04T12:08:56.235-0700
"yyMMddHHmmssZ"-------------------- 010704120856-0700
"K:mm a, z" ----------------------- 0:08 PM, PDT
"h:mm a" -------------------------- 12:08 PM
"EEE, MMM d, ''yy" ---------------- Wed, Jul 4, '01

126

वास्तव में, यह डिवाइस पर वर्तमान टाइमज़ोन सेट को सेट करने के लिए सुरक्षित है Time.getCurrentTimezone(), अन्यथा आपको UTC में वर्तमान समय मिलेगा।

Time today = new Time(Time.getCurrentTimezone());
today.setToNow();

फिर, आप उदाहरण के लिए, जैसे चाहें, सभी दिनांक फ़ील्ड प्राप्त कर सकते हैं:

textViewDay.setText(today.monthDay + "");             // Day of the month (1-31)
textViewMonth.setText(today.month + "");              // Month (0-11)
textViewYear.setText(today.year + "");                // Year 
textViewTime.setText(today.format("%k:%M:%S"));  // Current time

देखें android.text.format.Time सभी विवरण के लिए वर्ग।

अपडेट करें

जितने लोग इशारा कर रहे हैं, Google कहता है कि इस वर्ग के पास कई समस्याएँ हैं और अब इसका उपयोग नहीं किया जाना चाहिए:

इस वर्ग में कई समस्याएँ हैं और यह अनुशंसित है कि इसके बजाय ग्रेगोरियन कैलेन्डर का उपयोग किया जाता है।

ज्ञात पहलु:

ऐतिहासिक कारणों से समय गणना करते समय सभी अंकगणित वर्तमान में 32-बिट पूर्णांक का उपयोग करते हैं। यह 1902 से 2037 तक विश्वसनीय समय सीमा का प्रतिनिधित्व करता है। वर्ष 2038 समस्या पर विकिपीडिया लेख विवरण के लिए देखें। इस व्यवहार पर भरोसा न करें; यह भविष्य में बदल सकता है। स्विचटाइमज़ोन (स्ट्रिंग) को उस तिथि पर कॉल करना, जो मौजूद नहीं हो सकता है, जैसे कि दीवार समय जो कि डीएसटी संक्रमण के कारण छोड़ दिया गया था, परिणाम होगा 1969 (यानी -1 जनवरी 1970 यूटीसी से पहले 1 सेकंड)। अधिकांश स्वरूपण / पार्सिंग ASCII पाठ को मानता है और इसलिए गैर-ASCII लिपियों के साथ उपयोग के लिए उपयुक्त नहीं है।


समय को किस पैकेज से आयात किया जाना चाहिए?
मनीषएसबी

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

78

वर्तमान दिनांक और समय के लिए, उपयोग करें:

String mydate = java.text.DateFormat.getDateTimeInstance().format(Calendar.getInstance().getTime());

कौन से आउटपुट:

Feb 27, 2012 5:41:23 PM

मुझे सिस्टम की वर्तमान तिथि, दिन और समय मिल गया है लेकिन समय नहीं बदल रहा है। मैं सेकंड से समय सेकंड बढ़ाने के लिए नहीं कर सकता हूं। मैं कैसे कर सकता हूं?
भावेश हिरपारा

2
Android API के अनुसार, ऐसा करने का यह अनुशंसित तरीका है: developer.android.com/reference/java/text/… धन्यवाद!
एम ग्रांजा

58

इस तरह से प्रयास करें दिनांक और समय प्रारूप प्राप्त करने के लिए सभी प्रारूप नीचे दिए गए हैं।

    Calendar c = Calendar.getInstance();
    SimpleDateFormat dateformat = new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss aa");
    String datetime = dateformat.format(c.getTime());
    System.out.println(datetime);

प्रथम

दूसरा तीसरा


53

tl; डॉ

Instant.now()  // Current moment in UTC.

... या ...

ZonedDateTime.now( ZoneId.of( "America/Montreal" ) )  // In a particular time zone

विवरण

अन्य उत्तर, सही होने पर, पुराने हैं। पुरानी तिथि-समय की कक्षाएं खराब रूप से डिजाइन, भ्रमित और परेशानी देने वाली साबित हुई हैं।

java.time

उन पुराने वर्गों को java.time ढांचे द्वारा दबा दिया गया है ।

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

ओरेकल ट्यूटोरियल देखें ।

Instant

एक Instantमें समय रेखा पर एक पल है यूटीसी के लिए संकल्प के साथ नैनोसेकंड

 Instant instant = Instant.now(); // Current moment in UTC.

समय क्षेत्र

ZoneIdपाने के लिए एक समय क्षेत्र ( ) लागू करें ZonedDateTime। यदि आप समय क्षेत्र को छोड़ देते हैं तो आपका JVM का वर्तमान डिफ़ॉल्ट समय क्षेत्र अंतर्निहित रूप से लागू होता है। वांछित / अपेक्षित समय क्षेत्र को स्पष्ट रूप से निर्दिष्ट करने के लिए बेहतर है।

का प्रयोग करें उचित समय क्षेत्र के नाम के प्रारूप में continent/regionइस तरह के रूप America/Montreal, Europe/Brussels, या Asia/Kolkata। कभी इस तरह के रूप में 3-4 पत्र रूपों का उपयोग कर ESTया ISTके रूप में वे न मानकीकृत है और न ही अनूठा कर रहे हैं।

ZoneId zoneId = ZoneId.of( "America/Montreal" ); // Or "Asia/Kolkata", "Europe/Paris", and so on.
ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , zoneId );

जावा में तिथि-समय प्रकारों की तालिका, दोनों आधुनिक और विरासत

स्ट्रिंग्स जनरेट करना

आप आसानी Stringसे दिनांक-समय मान के एक पाठीय प्रतिनिधित्व के रूप में उत्पन्न कर सकते हैं । आप एक मानक प्रारूप, अपने स्वयं के कस्टम प्रारूप या स्वचालित रूप से स्थानीय स्वरूप के साथ जा सकते हैं।

आईएसओ 8601

आप toStringसामान्य और समझदार आईएसओ 8601 मानक का उपयोग करके पाठ स्वरूपित करने के तरीकों को कॉल कर सकते हैं ।

String output = instant.toString();

2016-03-23T03: 09: 01.613Z

ध्यान दें कि ZonedDateTime, toStringविधि वर्ग कोष्ठक में समय क्षेत्र के नाम को जोड़कर ISO 8601 मानक का विस्तार करती है। अत्यंत उपयोगी और महत्वपूर्ण जानकारी, लेकिन मानक नहीं।

2016-03-22T20: 09: 01.613-08: 00 [America / Los_Angeles]

कस्टम प्रारूप

या DateTimeFormatterकक्षा के साथ अपने स्वयं के विशेष स्वरूपण पैटर्न को निर्दिष्ट करें ।

DateTimeFormatter formatter = DateTimeFormatter.ofPattern( "dd/MM/yyyy hh:mm a" );

Localeएक मानव भाषा (अंग्रेजी, फ्रेंच , आदि) के लिए दिन / महीने के नाम का अनुवाद करने और वर्ष और महीने और तारीख के क्रम जैसे सांस्कृतिक मानदंडों को परिभाषित करने में उपयोग करने के लिए निर्दिष्ट करें । ध्यान दें कि Localeसमय क्षेत्र से कोई लेना देना नहीं है।

formatter = formatter.withLocale( Locale.US ); // Or Locale.CANADA_FRENCH or such.
String output = zdt.format( formatter );

स्थानीयकृत

बेहतर अभी तक, java.time स्वचालित रूप से स्थानीयकरण का काम करते हैं।

DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime( FormatStyle.MEDIUM );
String output = zdt.format( formatter.withLocale( Locale.US ) );  // Or Locale.CANADA_FRENCH and so on.

जावा के बारे में

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

Joda समय परियोजना, अब में रखरखाव मोड , प्रवास करने की सलाह देता java.time कक्षाएं।

अधिक जानने के लिए, Oracle ट्यूटोरियल देखें । और कई उदाहरणों और स्पष्टीकरणों के लिए ढेर अतिप्रवाह खोजें। विशिष्टता JSR 310 है

आप अपने डेटाबेस से सीधे java.time वस्तुओं का आदान-प्रदान कर सकते हैं । JDBC 4.2 या उसके बाद के JDBC ड्राइवर का अनुपालन करें । तार की कोई जरूरत नहीं, कक्षाओं की कोई जरूरत नहीं ।java.sql.*

Java.time कक्षाएं कहाँ से प्राप्त करें?

टेबल लिस्टिंग जो जावा और एंड्रॉइड के किन संस्करणों पर उपयोग करने के लिए * java.time * तकनीक का कार्यान्वयन करती है।


2
@ जिराफ.गुरु मेरे जवाब पर फिर से विचार करें। आप तीसरी गोली से चूक गए। Java.time कार्यक्षमता की ज्यादातर में जावा 6 और 7 के लिए वापस भेजा जाता है ThreeTen-backport और आगे में एंड्रॉयड के लिए अनुकूलित ThreeTenABP
तुलसी बॉर्क

Instant.now()और ZonedDateTime.now()आवश्यक है API 26
Ryde

2
@ राइड जैसा कि मैंने जिराफ से कहा था। गुरू, मेरे जवाब को फिर से पढ़ना। तीसरी गोली "एंड्रॉइड" का उल्लेख करें।
बेसिल बॉर्क

मेरा मानना ​​है कि आप सही हैं: आपकी नई java.time संस्करण तालिका एक बुलेट सूची की तुलना में संदेश को अधिक सीधे और आसानी से बताती है। अगर मुझे लगता है कि मुझे लगता है कि मैं मामले को थोड़ा और आगे ले जाऊंगा और थ्रोटबैटपोर्ट / जावा 8+ के तहत ब्रैकेट्स (या कुछ इसी तरह) में चेक मार्क लगा दूंगा और थ्री टीएनएबीपीपी / एंड्रॉइड 26+ के तहत चूंकि ये कॉम्बिनेशन काम करते हैं, तो केवल आईएनएन है। आमतौर पर उन्हें इस्तेमाल करने का कोई मतलब नहीं है। एंड्रॉइड ऐप विकसित किए जा रहे हैं जो थ्री टीएनएबीपी का उपयोग करते हैं और 26 से अधिक और दोनों स्तर पर एंड्रॉइड एपीआई स्तरों को लक्षित करते हैं। मुझे ऐसा लगता है कि डेवलपर्स इन मामलों में अच्छी तरह से चुनते हैं।
ओले वीवी

1
@ OleV.V। ग्राफिक तालिका में एक माध्यमिक चेक मार्क का सुझाव देने के लिए धन्यवाद। मैं तालिका के बाद के संस्करणों में इसका उपयोग कर रहा हूं। बेहतर हुआ।
तुलसी बोर्क

52

वर्तमान समय का उपयोग करने के लिए आप System.currentTimeMillis()जावा में मानक का उपयोग कर सकते हैं । तब आप इसका उपयोग डेट बनाने के लिए कर सकते हैं

Date currentDate = new Date(System.currentTimeMillis());

और जैसा कि एक समय बनाने के लिए दूसरों द्वारा उल्लेख किया गया है

Time currentTime = new Time();
currentTime.setToNow();

13
कोई जरूरत नहीं System.currentTimeMillis(); बस new Date() एक ही काम करता है
जोनीक डेस

@Jonik Cannot resolve constructor Date()in Android, Android SDK जावा 6 और 7. के मिश्रण का उपयोग करता है
surfer190

1
धन्यवाद। Date currentDate = new Date(System.currentTimeMillis());सही है
मघ

@ मेघघम नहीं, new Date(System.currentTimeMillis())सही में नहीं: (क) यह बेमानी है, जैसा कि ठीक वैसा ही है new Date()। (b) परेशान java.util.Dateवर्ग को अब java.time.Instantजावा 8 और बाद में दबा दिया गया है। में जावा 6 और 7 पर वापस-पोर्ट ThreeTen-backport परियोजना, और में पहले एंड्रॉयड (<26) को ThreeTenABP
बासिल बॉर्क

37

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

Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String strDate = sdf.format(c.getTime());

आउटपुट:

2014-11-11 00:47:55

तुम भी के लिए कुछ और स्वरूपण विकल्प प्राप्त SimpleDateFormatसे यहाँ


FYI करें, पुरानी पुरानी पुरानी समय की कक्षाएं जैसे कि java.util.Date, java.util.Calendarऔर java.text.SimpleDateFormatअब विरासत है , जावा 8 और बाद में निर्मित java.time कक्षाओं द्वारा ली गई है । ओरेकल द्वारा ट्यूटोरियल देखें ।
बासिल बॉर्क

32

आसान, आप वर्तमान समय के लिए अलग-अलग मान प्राप्त करने के लिए समय को अलग कर सकते हैं:

Calendar cal = Calendar.getInstance(); 

  int millisecond = cal.get(Calendar.MILLISECOND);
  int second = cal.get(Calendar.SECOND);
  int minute = cal.get(Calendar.MINUTE);
        //12 hour format
  int hour = cal.get(Calendar.HOUR);
        //24 hour format
  int hourofday = cal.get(Calendar.HOUR_OF_DAY);

दिनांक इस प्रकार है:

Calendar cal = Calendar.getInstance(); 

  int dayofyear = cal.get(Calendar.DAY_OF_YEAR);
  int year = cal.get(Calendar.YEAR);
  int dayofweek = cal.get(Calendar.DAY_OF_WEEK);
  int dayofmonth = cal.get(Calendar.DAY_OF_MONTH);

कैसे अगले 5-10 दिनों के लिए तारीख मिल सकती है..यहाँ मैनुअल गणना?
CoDe

@ कॉड आप उस के लिए दिनांक का उपयोग करें
FindOutIslamNow

27

एंड्रॉइड के मुख्य रूप से जावा के रूप में कई विकल्प हैं, लेकिन यदि आप इसे टेक्स्ट व्यू में लिखना चाहते हैं, तो निम्न कोड ट्रिक करेगा:

String currentDateTimeString = DateFormat.getDateInstance().format(new Date());

// textView is the TextView view that should display it
textView.setText(currentDateTimeString);

8
आपको उपयोग करना चाहिए Calendarया GregorianCalendarDateवर्ग मान्य नहीं है।
जोसेफ अर्ल

धन्यवाद दोस्त :) मुझे उस समय बिल्कुल भी अंदाजा नहीं था
dLobatog

12
दिनांक () संदर्भ प्रलेखन ( developer.android.com/reference/java/util/Date.html ) के अनुसार दिनांक () वर्ग को हटाए जाने के संदर्भ में कुछ भी नहीं है - हालांकि कई तरीकों और निर्माणों को हटा दिया गया है।
ज़ैक सेठ

2
यह वर्तमान उपयोगकर्ता सेटिंग्स (उदाहरण के लिए 12/24 समय प्रारूप) के अर्थ में गलत परिणाम देगा। वर्तमान उपयोगकर्ता सेटिंग्स के लिए DateFormat प्राप्त करने के लिए android.text.format.DateFormat.getTimeFormat (संदर्भ संदर्भ) का उपयोग करें।
२०

@ आप सही हैं डेट की विधि भी समय से अधिक उपयोग पूर्ण है

24
SimpleDateFormat databaseDateTimeFormate = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
SimpleDateFormat databaseDateFormate = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sdf1 = new SimpleDateFormat("dd.MM.yy");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy.MM.dd G 'at' hh:mm:ss z");
SimpleDateFormat sdf3 = new SimpleDateFormat("EEE, MMM d, ''yy");
SimpleDateFormat sdf4 = new SimpleDateFormat("h:mm a");
SimpleDateFormat sdf5 = new SimpleDateFormat("h:mm");
SimpleDateFormat sdf6 = new SimpleDateFormat("H:mm:ss:SSS");
SimpleDateFormat sdf7 = new SimpleDateFormat("K:mm a,z");
SimpleDateFormat sdf8 = new SimpleDateFormat("yyyy.MMMMM.dd GGG hh:mm aaa");


String currentDateandTime = databaseDateTimeFormate.format(new Date());     //2009-06-30 08:29:36
String currentDateandTime = databaseDateFormate.format(new Date());     //2009-06-30
String currentDateandTime = sdf1.format(new Date());     //30.06.09
String currentDateandTime = sdf2.format(new Date());     //2009.06.30 AD at 08:29:36 PDT
String currentDateandTime = sdf3.format(new Date());     //Tue, Jun 30, '09
String currentDateandTime = sdf4.format(new Date());     //8:29 PM
String currentDateandTime = sdf5.format(new Date());     //8:29
String currentDateandTime = sdf6.format(new Date());     //8:28:36:249
String currentDateandTime = sdf7.format(new Date());     //8:29 AM,PDT
String currentDateandTime = sdf8.format(new Date());     //2009.June.30 AD 08:29 AM

दिनांक स्वरूप पैटर्न

G   Era designator (before christ, after christ)
y   Year (e.g. 12 or 2012). Use either yy or yyyy.
M   Month in year. Number of M's determine length of format (e.g. MM, MMM or MMMMM)
d   Day in month. Number of d's determine length of format (e.g. d or dd)
h   Hour of day, 1-12 (AM / PM) (normally hh)
H   Hour of day, 0-23 (normally HH)
m   Minute in hour, 0-59 (normally mm)
s   Second in minute, 0-59 (normally ss)
S   Millisecond in second, 0-999 (normally SSS)
E   Day in week (e.g Monday, Tuesday etc.)
D   Day in year (1-366)
F   Day of week in month (e.g. 1st Thursday of December)
w   Week in year (1-53)
W   Week in month (0-5)
a   AM / PM marker
k   Hour in day (1-24, unlike HH's 0-23)
K   Hour in day, AM / PM (0-11)
z   Time Zone

1
हालांकि अन्य उत्तर भी सही हैं। मुझे यह उत्तर पसंद आया क्योंकि यह संबंधित समय संबंधी समस्याओं में भी मदद करता है। धन्यवाद @Vighnesh KM
अंकित गुप्ता


15

यह एक विधि है जो तारीख और समय प्राप्त करने के लिए उपयोगी होगी:

private String getDate(){
    DateFormat dfDate = new SimpleDateFormat("yyyy/MM/dd");
    String date=dfDate.format(Calendar.getInstance().getTime());
    DateFormat dfTime = new SimpleDateFormat("HH:mm");
    String time = dfTime.format(Calendar.getInstance().getTime());
    return date + " " + time;
}

आप इस विधि को कॉल कर सकते हैं और वर्तमान तिथि और समय मान प्राप्त कर सकते हैं:

2017/01//09 19:23

मुझे प्रस्तुति तर्क और प्रक्रिया तर्क की तंग युग्मन पसंद नहीं है; मैं एक ऐसी विधि पसंद करता हूँ जो सिर्फ स्वरूपण करता है और एक तारीख इनपुट परम लेता है। मुझे यह भी समझ में नहीं आ रहा है कि आप 2 SimpleDateFormats & 2 Dates का उपयोग क्यों कर रहे हैं ... क्या आप केवल "yyyy/MM/dd HH:mm"एक बार प्रारूप और कॉल कैलेंडर के रूप में उपयोग नहीं कर सकते हैं ?
AjahnCharles

12
Time time = new Time();
time.setToNow();
System.out.println("time: " + time.hour+":"+time.minute);

यह आपको देगा, उदाहरण के लिए, 12:32।

Android.text.format.Time आयात करना याद रखें;


12
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
    Calendar cal = Calendar.getInstance();
    System.out.println("time => " + dateFormat.format(cal.getTime()));

    String time_str = dateFormat.format(cal.getTime());

    String[] s = time_str.split(" ");

    for (int i = 0; i < s.length; i++) {
         System.out.println("date  => " + s[i]);
    }

    int year_sys = Integer.parseInt(s[0].split("/")[0]);
    int month_sys = Integer.parseInt(s[0].split("/")[1]);
    int day_sys = Integer.parseInt(s[0].split("/")[2]);

    int hour_sys = Integer.parseInt(s[1].split(":")[0]);
    int min_sys = Integer.parseInt(s[1].split(":")[1]);

    System.out.println("year_sys  => " + year_sys);
    System.out.println("month_sys  => " + month_sys);
    System.out.println("day_sys  => " + day_sys);

    System.out.println("hour_sys  => " + hour_sys);
    System.out.println("min_sys  => " + min_sys);

12

प्रारूप के साथ वर्तमान तिथि और समय के लिए, का उपयोग करें

जावा में

Calendar c = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String strDate = sdf.format(c.getTime());
Log.d("Date","DATE : " + strDate)

कोटलिन में

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    val current = LocalDateTime.now()
    val formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy. HH:mm:ss")
    var myDate: String =  current.format(formatter)
    Log.d("Date","DATE : " + myDate)
} else {
    var date = Date()
    val formatter = SimpleDateFormat("MMM dd yyyy HH:mma")
    val myDate: String = formatter.format(date)
    Log.d("Date","DATE : " + myDate)
}

दिनांक स्वरूप पैटर्न

"yyyy.MM.dd G 'at' HH:mm:ss z" ---- 2001.07.04 AD at 12:08:56 PDT
"hh 'o''clock' a, zzzz" ----------- 12 o'clock PM, Pacific Daylight Time
"EEE, d MMM yyyy HH:mm:ss Z"------- Wed, 4 Jul 2001 12:08:56 -0700
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"------- 2001-07-04T12:08:56.235-0700
"yyMMddHHmmssZ"-------------------- 010704120856-0700
"K:mm a, z" ----------------------- 0:08 PM, PDT
"h:mm a" -------------------------- 12:08 PM
"EEE, MMM d, ''yy" ---------------- Wed, Jul 4, '01

सह योगदान चाहने के लिए धन्यवाद। क्या आप कुछ ऐसा योगदान दे रहे हैं जो पिछले 36 उत्तरों में पहले से नहीं है? किसी भी मामले में आप अभी भी कुख्यात परेशान और लंबे समय से पुराने SimpleDateFormatवर्ग का उपयोग कर रहे हैं । ओरेओ से पहले आपको इसकी आवश्यकता नहीं है, आप इसके बजाय थ्रीटेबैप , जावा का बैकपोर्ट, आधुनिक जावा तिथि और समय एपीआई का उपयोग कर सकते हैं।
ओले वीवी

11

आप android.os.SystemClock का भी उपयोग कर सकते हैं। उदाहरण के लिए SystemClock.elapsedRealtime () फोन के सो जाने पर आपको अधिक सटीक रीडिंग देगा।


10

यदि आपको वर्तमान तिथि चाहिए:

Calendar cc = Calendar.getInstance();
int year = cc.get(Calendar.YEAR);
int month = cc.get(Calendar.MONTH);
int mDay = cc.get(Calendar.DAY_OF_MONTH);
System.out.println("Date", year + ":" + month + ":" + mDay);

यदि आपको वर्तमान समय की आवश्यकता है:

 int mHour = cc.get(Calendar.HOUR_OF_DAY);
 int mMinute = cc.get(Calendar.MINUTE);
 System.out.println("time_format" + String.format("%02d:%02d", mHour , mMinute));

9

एक अनुकूलित समय और तारीख प्रारूप के लिए:

    SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZZZZZ",Locale.ENGLISH);
    String cDateTime=dateFormat.format(new Date());

आउटपुट नीचे प्रारूप की तरह है: 2015-06-18T10: 15: 56-05: 00




8

आप का उपयोग करके तारीख प्राप्त कर सकते हैं:

Time t = new Time(Time.getCurrentTimezone());
t.setToNow();
String date = t.format("%Y/%m/%d");

यह आपको एक अच्छे रूप में परिणाम देगा, जैसा कि इस उदाहरण में है: "2014/02/09"।


पैरामीटर रहित निर्माता Time t = new Time();डिफ़ॉल्ट टाइमज़ोन का उपयोग करेगा। मेरे अनुभव में, डिफ़ॉल्ट == वर्तमान।
विलियम टी। मल्लार्ड

7

वैसे मुझे एपीआई के कुछ उत्तरों से समस्या थी इसलिए मैंने इस कोड को फ्यूज किया, मुझे आशा है कि यह उन लोगों की सेवा करेगा:

    Time t = new Time(Time.getCurrentTimezone());
    t.setToNow();
    String date1 = t.format("%Y/%m/%d");

    Date date = new Date(System.currentTimeMillis());
    SimpleDateFormat dateFormat = new SimpleDateFormat("hh:mm aa",
            Locale.ENGLISH);
    String var = dateFormat.format(date);
    String horafecha = var+ " - " + date1;

    tvTime.setText(horafecha);

आउटपुट: 03:25 PM - 2017/10/03


7

आप बस निम्नलिखित कोड का उपयोग कर सकते हैं:

 DateFormat df = new SimpleDateFormat("HH:mm"); // Format time
 String time = df.format(Calendar.getInstance().getTime());

 DateFormat df1 = new SimpleDateFormat("yyyy/MM/dd"); // Format date
 String date = df1.format(Calendar.getInstance().getTime());

6

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

String mytime = (DateFormat.format("dd-MM-yyyy hh:mm:ss", new java.util.Date()).toString());

यह सही एक लाइनर और सुरुचिपूर्ण समाधान है। यह वह सब है जिसकी आवश्यकता है, अन्य उत्तरों की तरह अनावश्यक रूप से लंबे समाधान नहीं।
जीशान २१'१

5

नीचे विधि स्ट्रिंग में वर्तमान तिथि और समय लौटाएगी, अपने वास्तविक समय क्षेत्र के अनुसार अलग-अलग समय क्षेत्र का उपयोग करें। मैंने GMT का उपयोग किया है

public static String GetToday(){
    Date presentTime_Date = Calendar.getInstance().getTime();
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
    return dateFormat.format(presentTime_Date);
}

4

आपको नए API के अनुसार Calender क्लास का उपयोग करना चाहिए। तिथि वर्ग को अब हटा दिया गया है।

Calendar cal = Calendar.getInstance();

String date = ""+cal.get(Calendar.DATE)+"-"+(cal.get(Calendar.MONTH)+1)+"-"+cal.get(Calendar.YEAR);

String time = ""+cal.get(Calendar.HOUR_OF_DAY)+":"+cal.get(Calendar.MINUTE);

4

नीचे दिए गए कोड का उपयोग करने का प्रयास करें:

 Date date = new Date();
 SimpleDateFormat dateFormatWithZone = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",Locale.getDefault());  
 String currentDate = dateFormatWithZone.format(date);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.