करन - Android पर वर्तमान समय और दिनांक प्राप्त करें




भुगतान बैंक द्वारा अस्वीकार (20)

tl; डॉ

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

... या ...

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

विवरण

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

java.time

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

ये नए वर्ग जेएसआर 310 द्वारा परिभाषित अत्यधिक सफल Joda-Time प्रोजेक्ट से प्रेरित हैं, और ThreeTen-Extra प्रोजेक्ट द्वारा विस्तारित हैं।

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

Instant

एक Instant UTC में टाइमलाइन पर nanoseconds तक संकल्प के साथ एक पल nanoseconds

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

समय क्षेत्र

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

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

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

स्ट्रिंग्स उत्पन्न करना

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

आईएसओ 8601

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

String output = instant.toString();

2016-03-23T03: 09: 01.613Z

ध्यान दें कि ZonedDateTime , toString विधि स्क्वायर ब्रैकेट में समय क्षेत्र के नाम को जोड़कर आईएसओ 8601 मानक बढ़ाती है। बेहद उपयोगी और महत्वपूर्ण जानकारी, लेकिन मानक नहीं।

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

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

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

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

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

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

स्थानीयकृत

बेहतर अभी तक, जावा को स्वचालित रूप से स्थानीयकरण का काम करने दें।

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

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

java.time फ्रेमवर्क जावा 8 और बाद में बनाया गया है। ये कक्षाएं परेशानी पुरानी legacy दिनांक-समय कक्षाओं जैसे java.util.Date , .Calendar , और java.text.SimpleDateFormat

Joda-Time प्रोजेक्ट, अब रखरखाव मोड में , जावा.टाइम में माइग्रेशन की सलाह देता है।

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

जावा.टाइम कक्षाएं कहां प्राप्त करें?

  • जावा एसई 8 और एसई 9 और बाद में
    • निर्मित।
    • एक बंडल कार्यान्वयन के साथ मानक जावा एपीआई का हिस्सा।
    • जावा 9 कुछ मामूली विशेषताओं और फिक्सेस जोड़ता है।
  • जावा एसई 6 और एसई 7
    • जावाटाइम की अधिकांश कार्यक्षमता को थ्रीटेन-बैकपोर्ट में जावा 6 और 7 में बैक-पोर्ट किया गया है।
  • Android
    • थ्रीटेनबैप प्रोजेक्ट विशेष रूप से एंड्रॉइड के लिए थ्रीटेन-बैकपोर्ट (ऊपर उल्लिखित) को अनुकूलित करता है।
    • देखें कि कैसे उपयोग करें ...।

ThreeTen-Extra प्रोजेक्ट अतिरिक्त कक्षाओं के साथ जावा.टाइम बढ़ाता है। यह परियोजना java.time के संभावित भविष्य के जोड़ों के लिए एक सिद्ध भूमि है। आपको यहां कुछ उपयोगी कक्षाएं मिल सकती हैं जैसे Interval , YearWeek , YearQuarter , more

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


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

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-बिट पूर्णांक का उपयोग करते हैं। यह 1 9 02 से 2037 तक विश्वसनीय समय सीमा को सीमित करता है। विवरण के लिए वर्ष 2038 की समस्या पर विकिपीडिया लेख देखें। इस व्यवहार पर भरोसा मत करो; यह भविष्य में बदल सकता है। एक तिथि पर स्विचटाइमज़ोन (स्ट्रिंग) को कॉल करना, जो कि अस्तित्व में नहीं हो सकता है, जैसे डीएसटी संक्रमण के कारण छोड़ा गया दीवार समय, परिणामस्वरूप 1 9 6 9 (यानी -1, या 1 जनवरी 1 9 70 यूटीसी से पहले 1 सेकंड) की तारीख होगी। स्वरूपण / पार्सिंग में से अधिकांश ASCII पाठ मानते हैं और इसलिए गैर-ASCII स्क्रिप्ट के उपयोग के लिए उपयुक्त नहीं हैं।


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

import java.util.Calendar

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

आपको जो भी चाहिए, उसके लिए कैलेंडर में बहुत सारे स्थिरांक हैं। संपादित करें: कैलेंडर वर्ग प्रलेखन


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

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

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


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

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

आपको here से SimpleDateFormat लिए कुछ और प्रारूपण विकल्प भी मिलते here


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

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

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

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

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);

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

    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);


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

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

जबकि आप डेटफॉर्मेट पैटर्न जैसे कि:

"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

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

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

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

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

    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 अपराह्न - 2017/10/03


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

 Date date = new Date();
 SimpleDateFormat dateFormatWithZone = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",Locale.getDefault());  
 String currentDate = dateFormatWithZone.format(date);

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

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

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

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 ));

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

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

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

Feb 27, 2012 5:41:23 PM

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

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

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

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

    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);

Date todayDate = new Date();
todayDate.getDay();
todayDate.getHours();
todayDate.getMinutes();
todayDate.getMonth();
todayDate.getTime();

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

मेरे लिए यह काम भी आज़माएं।


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

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

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








time