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


165

मैंने निम्नलिखित कोड लिखा है

Date d = new Date();
CharSequence s  = DateFormat.format("MMMM d, yyyy ", d.getTime());

लेकिन मुझे पैरामीटर पूछ रहा है, मैं स्ट्रिंग प्रारूप में वर्तमान तिथि चाहता हूं,

पसंद

28-Dec-2011

ताकि मैं सेट कर सकूं TextView,

थोड़ा समझाएं, अगर आपको लगता है कि कुछ आवश्यक है, तो मैं Android विकास में नया हूं।


1
DateFormatकक्षा का उपयोग करते समय ठीक था जब यह प्रश्न 2011 में पूछा गया था, तो वह वर्ग और उसके उपवर्ग SimpleDateFormatहमेशा परेशान थे और अब लंबे समय तक पुराने हैं। मेरा सुझाव है कि आप इनका उपयोग न करें और इसके बजाय java.time, आधुनिक जावा तिथि और समय एपीआई में देखें
ओले वीवी

जवाबों:


389

आप SimpleDateFormatअपने इच्छित प्रारूप में दिनांक स्वरूपण के लिए कक्षा का उपयोग कर सकते हैं ।

बस इस लिंक को जांचें जहां आपको अपने उदाहरण के लिए एक विचार मिलता है।

उदाहरण के लिए:

String dateStr = "04/05/2010"; 
 
SimpleDateFormat curFormater = new SimpleDateFormat("dd/MM/yyyy"); 
Date dateObj = curFormater.parse(dateStr); 
SimpleDateFormat postFormater = new SimpleDateFormat("MMMM dd, yyyy"); 
 
String newDateStr = postFormater.format(dateObj); 

अपडेट करें:

विस्तृत उदाहरण यहां है , मैं आपको इस उदाहरण के माध्यम से जाने और SimpleDateFormat वर्ग की अवधारणा को समझने का सुझाव दूंगा।

अंतिम समाधान:

Date c = Calendar.getInstance().getTime();
System.out.println("Current time => " + c);

SimpleDateFormat df = new SimpleDateFormat("dd-MMM-yyyy", Locale.getDefault());
String formattedDate = df.format(c);

आप कैलेंडर वर्ग f के बजाय System.currentTimeMillis () विधि या डेटा वर्ग का उपयोग करना चाह सकते हैं। जल्दी होना चाहिए। stackoverflow.com/questions/368094/…
cjayem13

इसके लिए API 24 की आवश्यकता है!
ईयूएन

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

@ueen कृपया java पैकेज से आयात करें न कि android से।
सादा हुसैन

जुर्माना काम करता है? वर्तमान में? (2020)
ल्यूक क्रॉस

152

इस yyyy-MM-dd में वर्तमान दिनांक प्राप्त करने के लिए इसका एक सरल कोड है प्रारूप आप अपने इच्छित प्रारूप का उपयोग कर सकते हैं:

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

7
आपको इसे बदलना चाहिए: स्ट्रिंग करेंट्रेड = नया सिंपलडेटफार्मेट ("dd-MM-yyyy", Locale.getDefault ())। format (new Date ());
बार्ट बर्ग

1
वाह धन्यवाद! यह काम किया, हालांकि मेरा मानना ​​है कि मुझे पता चला है कि मेरे वर्चुअल डिवाइस पर तारीख एक दिन पहले क्यों दिखाई दे रही थी, शायद इसलिए वर्चुअल मशीन पर तारीख सही नहीं थी। जब वास्तविक फोन पर परीक्षण किया गया, तो इसने अद्भुत काम किया। तो धन्यवाद @Pratik
wesley

30

यह android के साथ करने के लिए कुछ भी नहीं है क्योंकि यह जावा आधारित है ताकि आप उपयोग कर सकें

private String getDateTime() { 
   DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
   Date date = new Date(); 
   return dateFormat.format(date); 
}

त्रुटियाँ हैं, नई तिथि () तर्क के लिए पूछ रही है, और आप DateFormat को SimpleDateFormat के साथ आरंभ कर रहे हैं, यह भी मान्य नहीं है
चतरा वीर सुथार

12
 public String giveDate() {
    Calendar cal = Calendar.getInstance();
    SimpleDateFormat sdf = new SimpleDateFormat("EEE, MMM d, yyyy");
    return sdf.format(cal.getTime());
 }

11

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

SimpleDateFormat timeStampFormat = new SimpleDateFormat("yyyyMMddHHmmssSS");
Date myDate = new Date();
String filename = timeStampFormat.format(myDate);

यह कह रहा है कि नई तारीख (लंबी)
चतरा वीर सुथार

नई तिथि () में, यह लंबे पैरामीटर नहीं पूछ सकता है।
लूसिफ़ेर

आप निजी कीवर्क का उपयोग क्यों करते हैं, एंड्रॉइड प्रोजेक्ट में अपना कोड चलाते हैं, क्या आपको आउटपुट मिलता है?
चतर वीर सुथार

कृपया उस "निजी" को हटा दें। हाँ मुझे आउटपुट मिलता है, मैं आपकी चर्चा देख रहा हूँ। मुझे नहीं पता कि आपको बहुत ही सरल उद्धरण के लिए समस्या क्यों हो रही है।
लूसिफ़ेर

7
CharSequence s  = DateFormat.getDateInstance().format("MMMM d, yyyy ");

आपको पहले एक उदाहरण की आवश्यकता है


getDateInstance, इसे पहचानना नहीं
चतरा वीर सुथार

यदि आप जावा डॉक्स को देखते हैं, तो यह होना चाहिए, डॉक्स .oracle.com / javase / 6 / docs / api / java/ text / , java.util.Locale)
Marthyn Olthof 5

@Veer, अगर आपने गलती से java.text.DateFormat के बजाय android.text.format.DateFormat आयात कर लिया, getDateInstance () नहीं पहचाना जाएगा
gcbound

7

एक आकर्षण की तरह काम करता है और स्ट्रिंग को एक बोनस के रूप में परिवर्तित करता है;)

SimpleDateFormat currentDate = new SimpleDateFormat("dd/MM/yyyy");
      Date todayDate = new Date();
    String thisDate = currentDate.format(todayDate);




4

मैं आधुनिक उत्तर प्रदान कर रहा हूं।

java.time और ThreeTenABP

वर्तमान तिथि प्राप्त करने के लिए:

    LocalDate today = LocalDate.now(ZoneId.of("America/Hermosillo"));

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

केवल जब आपको किसी उपयोगकर्ता को दिनांक प्रदर्शित करने की आवश्यकता होती है, तो उसे उपयोगकर्ता के स्थान के लिए उपयुक्त स्ट्रिंग में प्रारूपित करें:

    DateTimeFormatter userFormatter
            = DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG);
    System.out.println(today.format(userFormatter));

जब मैंने इस स्निपेट को आज अमेरिका के अंग्रेजी लोकेल में चलाया, तो आउटपुट था:

13 जुलाई 2019

यदि आप इसे छोटा चाहते हैं, तो निर्दिष्ट करें FormatStyle.MEDIUMया यहां तक ​​कि FormatStyle.SHORTDateTimeFormatter.ofLocalizedDateडिफ़ॉल्ट स्वरूपण लोकेल का उपयोग करता है, इसलिए मुद्दा यह है कि यह उस स्थान के लिए उपयुक्त आउटपुट देगा, विभिन्न स्थानों के लिए अलग।

यदि आपके उपयोगकर्ता के आउटपुट प्रारूप के लिए बहुत विशेष आवश्यकताएं हैं, तो एक प्रारूप पैटर्न स्ट्रिंग का उपयोग करें:

    DateTimeFormatter userFormatter = DateTimeFormatter.ofPattern(
            "d-MMM-u", Locale.forLanguageTag("ar-AE"));

13-يول -2019

मैं java.time, आधुनिक जावा दिनांक और समय API का उपयोग और अनुशंसा कर रहा हूं। DateFormat, SimpleDateFormat, DateऔरCalendar प्रश्न में इस्तेमाल किया और / या अन्य जवाब में से कई, खराब तरीके से तैयार कर रहे हैं और लंबे समय से पुराना। और java.time के साथ काम करने के लिए बहुत अच्छा है।

प्रश्न: क्या मैं एंड्रॉइड पर java.time का उपयोग कर सकता हूं?

हाँ, java.time पुराने और नए Android उपकरणों पर अच्छी तरह से काम करता है। इसके लिए बस कम से कम जावा 6 की आवश्यकता होती है ।

  • जावा 8 और बाद में और नए एंड्रॉइड डिवाइसों पर (एपीआई स्तर 26 से) आधुनिक एपीआई बिल्ट-इन आता है।
  • जावा 6 और 7 में थ्रीटेन बैकपोर्ट मिलता है, आधुनिक कक्षाओं का बैकपोर्ट (जेएसआर 310 के लिए थ्रीटेन; नीचे लिंक देखें)।
  • पर (पुराने) एंड्रॉइड, थ्रीटेन बैकपोर्ट के एंड्रॉइड संस्करण का उपयोग करते हैं। इसे थ्रीटेनबप कहा जाता है। और सुनिश्चित करें कि आप org.threeten.bpसबपेकेज से दिनांक और समय की कक्षाओं का आयात करते हैं ।

लिंक


बहुत अच्छा जवाब! लेकिन मैं थ्रीटैन लोकलडेट को डेट में कैसे बदल सकता हूं? मैं फायरबेस का उपयोग कर रहा हूं, और टाइमस्टैम्प को बचाने के लिए एक शर्त है डेट ऑब्जेक्ट।
एच। केरात्सनोव

@ H.Karatsanov यदि बैकपोर्ट का उपयोग कर रहे हैं DateTimeUtils.toDate(yourLocalDateTime.atZone(ZoneId.systemDefault()).toInstant()):। यदि निर्मित जावा का उपयोग कर रहे हैं Date.from(yourLocalDateTime.atZone(ZoneId.systemDefault()).toInstant())Java.time.ocalDateTime और java.util.Date के बीच परिवर्तित करना देखें । JodaStephen द्वारा आधिकारिक उत्तर है, और बैकपोर्ट के उपयोग को दर्शाने वाला उत्तर भी है
ओले वीवी

4
 public static String getcurrentDateAndTime(){

        Date c = Calendar.getInstance().getTime();
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd");
        String formattedDate = simpleDateFormat.format(c);
        return formattedDate;
    }

// String currentdate=  getcurrentDateAndTime();

क्या यह प्रश्न के प्रति पर्याप्त योगदान दे रहा है28-Dec-2011 ( मुझे स्ट्रिंग प्रारूप में वर्तमान तिथि चाहिए, जैसे ) जो पहले से ही अन्य उत्तरों में नहीं है? किसी भी मामले में यह अभी भी कुख्यात परेशानी और लंबे समय तक पुराने SimpleDateFormatवर्ग का उपयोग कर रहा है । कृपया, हमें ऐसा करने वाले किसी और उत्तर की आवश्यकता नहीं है।
ओले वीवी

यह सबसे अच्छा अभ्यास के लिए काम कर रहा है दूसरे पैरामीटर लोकल SimpleDateFormat simpleDateFormat = नया SimpleDateFormat ("yyyy / MM / dd", Locale.ENGLISH) जोड़ें;
रूचा भट्ट जोशी

3
Calendar cal = Calendar.getInstance();      
Calendar dt = Calendar.getInstance(); 
dt.clear();
dt.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONTH),cal.get(Calendar.DATE)); 
return dt.getTime();        

3

परेश के समाधान के लिए एक सरल ट्वीक:

Date date = Calendar.getInstance().getTime();
SimpleDateFormat df = new SimpleDateFormat("dd-MMM-yyyy");
String formattedDate = df.format(date);

3
Calendar c = Calendar.getInstance();
int day = c.get(Calendar.DAY_OF_MONTH);
int month = c.get(Calendar.MONTH);
int year = c.get(Calendar.YEAR);
String date = day + "/" + (month + 1) + "/" + year;

Log.i("TAG", "--->" + date);

2

आप जिस प्रारूप को चाहते हैं उसमें तारीख पाने के लिए आप निम्नलिखित कोड का उपयोग कर सकते हैं।

String date = String.valueOf(android.text.format.DateFormat.format("dd-MM-yyyy", new java.util.Date()));

अच्छा एक लाइनर और निचले Sdks पर काम करता है। कुछ पात्र DateFormat.format ("dd-MM-yyyy", new java.util.Date ()) .String ()
जेफरी

1
Date c = Calendar.getInstance().getTime();
System.out.println("Current time => " + c);

SimpleDateFormat df = new SimpleDateFormat("dd-MMM-yyyy");
String formattedDate = df.format(c);

यह एक सबसे अच्छा जवाब है ...


0

वर्तमान स्थान (डिवाइस लोकेल!) में वर्तमान तिथि प्राप्त करने का सबसे सरल तरीका:

String currentDate = DateFormat.getDateInstance().format(Calendar.getInstance().getTime());

यदि आप विभिन्न शैलियों में तारीख का उपयोग करना चाहते हैं getDateInstance(int style):

DateFormat.getDateInstance(DateFormat.FULL).format(Calendar.getInstance().getTime());

अन्य शैलियों: DateFormat.LONG, DateFormat.DATE_FIELD, DateFormat.DAY_OF_YEAR_FIELD, आदि (उपयोग CTRL+Spaceउन सभी को देखने के लिए)

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

String currentDateTime = DateFormat.getDateTimeInstance(DateFormat.DEFAULT,DateFormat.LONG).format(Calendar.getInstance().getTime());

0
  public static String getDateTime() {
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MMMM dd, yyyy HH:mm:ss", Locale.getDefault());
        Date date = new Date();
        return simpleDateFormat.format(date);
    }

0

कोड के इस लिंक के साथ प्रयास करें यह सभी मामलों के लिए संपूर्ण तिथि और समय के लिए पूर्ण सही उत्तर है। या एप्लिकेशन की आवश्यकता और आवश्यकता के अनुसार दिनांक और समय को अनुकूलित करें।

इस लिंक के साथ प्रयास करें। इस लिंक के साथ प्रयास करें


0

मैंने CalendarView का उपयोग करके कैलेंडर ऐप लिखा है और यह मेरा कोड है:

CalendarView cal = (CalendarView) findViewById(R.id.calendar);
cal.setDate(new Date().getTime());

'कैलेंडर' फ़ील्ड मेरा कैलेंडर दृश्य है। आयात:

import android.widget.CalendarView;
import java.util.Date;

मुझे त्रुटियों के बिना वर्तमान तिथि मिल गई है।


0

यह वह कोड है जिसका मैंने उपयोग किया है:

             Date date = new Date();  // to get the date
             SimpleDateFormat df = new SimpleDateFormat("dd-MM-yyyy"); // getting date in this format
             String formattedDate = df.format(date.getTime());
             text.setText(formattedDate);

0

मैंने पहले से ही इसका उपयोग किया है:

Date What_Is_Today=Calendar.getInstance().getTime();
SimpleDateFormat Dateformat = new SimpleDateFormat("dd-MM-yyyy");
String Today=Dateformatf.format(What_Is_Today);

Toast.makeText(this,Today,Toast.LENGTH_LONG).show();

पहले मुझे समय मिलता है, फिर मैंने एक साधारण तिथि प्रारूप घोषित किया (जैसे दिनांक प्राप्त करने के लिए: 19-6-2018) फिर मैं तिथि को स्ट्रिंग में बदलने के लिए प्रारूप का उपयोग करता हूं।


0

सरल दिनांक प्रारूप प्राप्त करने के लिए सिर्फ एक पंक्ति कोड:

SimpleDateFormat.getDateInstance().format(Date())

आउटपुट: 18-मई-2020

SimpleDateFormat.getDateTimeInstance().format(Date())

आउटपुट: 18-मई-2020 11:00:39 पूर्वाह्न

SimpleDateFormat.getTimeInstance().format(Date())

आउटपुट: 11:00:39 पूर्वाह्न

आशा है कि यह उत्तर इस दिनांक और समय प्रारूप को प्राप्त करने के लिए पर्याप्त है ... :)


कृपया लंबे पुराने और कुख्यात परेशानियों SimpleDateFormatऔर DateFormatकक्षाओं का उपयोग करने के लिए युवाओं को न सिखाएं । कम से कम पहले विकल्प के रूप में नहीं। और बिना किसी आरक्षण के नहीं। आज हमारे पास java.timeआधुनिक जावा तिथि और समय एपीआई, और इसके बहुत बेहतर हैं DateTimeFormatter। हां, आप इसे एंड्रॉइड पर उपयोग कर सकते हैं। पुराने एंड्रॉइड के लिए देखें कि एंड्रॉइड प्रोजेक्ट में थ्रीटेनबप का उपयोग कैसे करें
ओले वीवी

-1

यह वह कोड है जिसका मैंने उपयोग किया है :

final Calendar c = Calendar.getInstance();
year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH);
day = c.get(Calendar.DAY_OF_MONTH);

// Set current date into textview
tvDisplayDate.setText(new StringBuilder()
    .append(month + 1).append("-") // Month is 0 based, add 1
    .append(day).append("-")
    .append(year).append("   Today is :" + thursday ) );

// Set current date into datepicker
dpResult.init(year, month, day, null);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.