2013-10-18 17 views
2
SimpleDateFormat DATE_TIME_FORMAT = new SimpleDateFormat("yyyyMMddHHmmss"); 
try { 
    String timeString=new String("19860821130102"); 
    Log.v(TAG, "timeString=" + timeString); 
    java.util.Date date = DATE_TIME_FORMAT.parse(timeString); 
    Log.v(TAG, date.toString()); 
} catch (ParseException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

我使用上面的代碼段來解析字符串到日期。 的logcat的結果是解析字符串到目前爲止似乎是錯誤的

TIMESTRING = 19860821130102

週四8月21日14時01分02秒GMT + 08:00 1986年

我認爲每小時場應該是13,而不是14。 這讓我感到困惑。 有什麼幫助嗎?你可能想

+0

爲了提高可讀性,你應該把你的字符串作爲YYYY-MM-DD-HH-MM-SS作爲輸入字符串,然後刪除' - '字符,這使得它更容易閱讀..因爲它是..我不想t甚至看看你的非過濾字符串,特別是沒有格式的TLDR。讓我們更容易閱讀您的代碼,也許我們會閱讀它:P – JoxTraex

+0

是GMT + 8:00您的實際默認時區? – GreyBeardedGeek

+0

也許問題是因爲你的GMT – vgarzom

回答

0

你可以試試這個

SimpleDateFormat DATE_TIME_FORMAT = new SimpleDateFormat("yyyyMMddHHmmss"); 
SimpleDateFormat Parsed_DATE_TIME_FORMAT = new SimpleDateFormat("yyyyMMddHHmmss"); 
try { 
    String timeString=new String("19860821130102"); 
    Log.v(TAG, "timeString=" + timeString); 

    TimeZone destTimeZone = TimeZone.getDefault(); 
    Log.v=(TAG, "Source TimeZone: " + destTimeZone); 

    DATE_TIME_FORMAT.setTimeZone(destTimeZone); 
    String convertedDateString = DATE_TIME_FORMAT.format(DATE_TIME_FORMAT.parse(timeString)); 
    Log.v(TAG, "ConvertedDateString: " + convertedDateString); 

    java.util.Date date = Parsed_DATE_TIME_FORMAT.parse(convertedDateString, new ParsePosition(0)); 
    Log.v(TAG, "ConvertedTime: " + date); 
} catch (ParseException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 
+0

當我看到「TimeZone」這個詞時,我意識到我的問題有多愚蠢。 – user965244

+0

@ user965244:沒有問題是愚蠢的。我很高興知道我的答案幫助你解決了你的問題。 :) – VikramV

0

使用此解決方案

String dateString = "03/26/2012 11:49:00 AM"; 
    SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss aa"); 
    Date convertedDate = new Date(); 
    try { 
     convertedDate = dateFormat.parse(dateString); 
    } catch (ParseException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    System.out.println(convertedDate); 
+0

我看不到此代碼與問題中提供的代碼之間的任何區別,只需在模式中添加「aa」字符串即可。我相信這不是問題 – vgarzom

0

插入這個第一行

DATE_TIME_FORMAT.setTimeZone(TimeZone.getTimeZone("GMT+0800")); 

後根據您的需要進行修改。

0

因爲hh以小時爲單位小時數1到12您可以看到編碼Format

試試如下:

DateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss"); 
String datenow="19860821130102"; 
Date date2 = (Date) formatter.parse(datenow); 
+0

但他不使用......他使用HH這是0-23格式 –