Android, मैं स्ट्रिंग को दिनांक में कैसे परिवर्तित कर सकता हूं?


142

मैं डेटाबेस में हर बार एप्लिकेशन उपयोगकर्ता द्वारा शुरू होने वाले समय को स्टोर करता हूं।

Calendar c = Calendar.getInstance();
    String str = c.getTime().toString();
    Log.i("Current time", str);

डेटाबेस पक्ष में, मैं वर्तमान समय को स्ट्रिंग के रूप में संग्रहीत करता हूं (जैसा कि आप उपरोक्त कोड में देखते हैं)। इसलिए, जब मैं इसे डेटाबेस से लोड करता हूं, तो मुझे इसे डेट ऑब्जेक्ट में डालना होगा। मैंने कुछ नमूने देखे जो उन सभी ने "DateFormat" का उपयोग किया था। लेकिन मेरा प्रारूप बिल्कुल तारीख प्रारूप के समान है। इसलिए, मुझे लगता है कि "DateFormat" का उपयोग करने की कोई आवश्यकता नहीं है। क्या मैं सही हू?

वहाँ वैसे भी सीधे इस स्ट्रिंग तिथि करने के लिए डाली है? मैं इस संग्रहीत समय की वर्तमान समय के साथ तुलना करना चाहता हूं।

धन्यवाद

======> अद्यतन

धन्यवाद प्रिय दोस्तों। मैंने निम्नलिखित कोड का उपयोग किया:

private boolean isPackageExpired(String date){
        boolean isExpired=false;
        Date expiredDate = stringToDate(date, "EEE MMM d HH:mm:ss zz yyyy");        
        if (new Date().after(expiredDate)) isExpired=true;

        return isExpired;
    }

    private Date stringToDate(String aDate,String aFormat) {

      if(aDate==null) return null;
      ParsePosition pos = new ParsePosition(0);
      SimpleDateFormat simpledateformat = new SimpleDateFormat(aFormat);
      Date stringDate = simpledateformat.parse(aDate, pos);
      return stringDate;            

   }

जवाबों:


419

स्ट्रिंग से तारीख तक

String dtStart = "2010-10-15T09:27:37Z";  
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");  
try {  
    Date date = format.parse(dtStart);  
    System.out.println(date);  
} catch (ParseException e) {
    e.printStackTrace();  
}

दिनांक से स्ट्रिंग तक

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");  
try {  
    Date date = new Date();  
    String dateTime = dateFormat.format(date);
    System.out.println("Current Date Time : " + dateTime); 
} catch (ParseException e) {
    e.printStackTrace();  
}

सटीक रूप से - डेटाबेस में संग्रहीत करने से पहले दिनांक स्ट्रिंग के लिए कुछ मानक फ़ॉर्म लागू करना बेहतर होता है। इस मामले में en.wikipedia.org/wiki/ISO_8601
denis.solonenko

"स्ट्रिंग टू डेट" पर अधिक सख्ती से काम करने वाले समाधान के लिए, "format.setLenient (मिथ्या)" जोड़ना सुविधाजनक है; कोशिश से पहले ... पकड़ ब्लॉक। इस तरह एक पूर्व सही स्ट्रिंग तारीख की जांच बेहतर होगी।
अलेक्स

मुझे विश्वास नहीं है कि SimpleDateFormat.format()एक अपवाद फेंकता है
किसी ने

2
यदि आपका SDK संस्करण मार्शमैलो के बराबर या अधिक है तो इस तरह का उपयोग करें SimpleDateFormat dateFormat =new SimpleDateFormat(""yyyy-MM-dd'T'HH:mm:ss'Z'"", Locale.getDefault());
धीरज जायसवाल

8
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
Date d = dateFormat.parse(datestring)

2
यह एक चर के रूप में स्ट्रिंग पार्स करने के लिए नहीं लगता है? इस तरह से, यह "स्ट्रिंग" शब्द को पार्स करने की कोशिश कर रहा है।
मार्को

6

के माध्यम से SimpleDateFormat या DateFormat वर्ग का उपयोग करना

उदाहरण के लिए

try{
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); // here set the pattern as you date in string was containing like date/month/year
Date d = sdf.parse("20/12/2011");
}catch(ParseException ex){
    // handle parsing exception if date string was different from the pattern applying into the SimpleDateFormat contructor
}

4
     import java.text.ParseException;
     import java.text.SimpleDateFormat;
     import java.util.Date;
     public class MyClass 
     {
     public static void main(String args[]) 
     {
     SimpleDateFormat formatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy");

     String dateInString = "Wed Mar 14 15:30:00 EET 2018";

     SimpleDateFormat formatterOut = new SimpleDateFormat("dd MMM yyyy");


     try {

        Date date = formatter.parse(dateInString);
        System.out.println(date);
        System.out.println(formatterOut.format(date));

         } catch (ParseException e) {
        e.printStackTrace();
         }
    }
    }

यहाँ आपका दिनांक ऑब्जेक्ट दिनांक और आउटपुट है:

बुध मार्च 14 13:30:00 यूटीसी 2018

14 मार्च 2018


आपको बहुत - बहुत धन्यवाद!
मेरीओमी 1

1

यह एक अच्छा विचार हो सकता है कि लोकाले पर c.getTime().toString();निर्भर रहना चाहिए ।

एक विचार सेकंड में समय स्टोर करने का है (जैसे UNIX समय )। जैसा कि intआप आसानी से इसकी तुलना कर सकते हैं, और फिर आप इसे उपयोगकर्ता को प्रदर्शित करते समय इसे स्ट्रिंग में परिवर्तित कर सकते हैं।


1
String source = "24/10/17";

String[] sourceSplit= source.split("/");

int anno= Integer.parseInt(sourceSplit[2]);
int mese= Integer.parseInt(sourceSplit[1]);
int giorno= Integer.parseInt(sourceSplit[0]);

    GregorianCalendar calendar = new GregorianCalendar();
  calendar.set(anno,mese-1,giorno);
  Date   data1= calendar.getTime();
  SimpleDateFormat myFormat = new SimpleDateFormat("20yy-MM-dd");

    String   dayFormatted= myFormat.format(data1);

    System.out.println("data formattata,-->"+dayFormatted);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.