2011-12-20 11 views
83

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

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

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

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

धन्यवाद

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

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

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;    

    } 

उत्तर

251

स्ट्रिंग से के माध्यम से

उदा के लिए

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(); 
} 
+0

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

+0

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

6
SimpleDateFormat dateFormat = new SimpleDateFormat("DD-MM-YYYY"); 
Date d = dateFormat.parse(datestring) 
+2

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

+0

YYYY और DD गलत है, yyyy और dd सत्य है –

5

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 
} 
0

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

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

0
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); 
संबंधित मुद्दे