2012-08-01 179 views
1

我從數據庫獲取日期值,作爲long值。我將此轉換爲字符串使用解析函數。下面給出的是我的代碼將長字符串轉換爲日期

Date date1 = new SimpleDateFormat("MM/dd/yyyy").parse(strDate1); 

,但應用程序崩潰時,這個代碼是executing.it將成功執行,如果

strDate1="12/30/2012". 

,但我有這個值作爲「」(pzudo值)。

我該怎麼做?

編輯:

我很日期值保存到DB爲INTEGER。從DB我得到這個值,並轉換爲string.this是實際strDate1值

strDate1="1346524199000" 
+3

*你的'長'值代表什麼?它存儲什麼,誰在存儲它?如果它意味着(比如說)從Unix時代開始「毫秒」或者一些可怕的僞文本數字表示,那麼它會產生一個*大*差。 – 2012-08-01 06:02:23

+0

你可以剝掉最後3個字符,然後使用你的價值? – Aviral 2012-08-01 06:18:26

回答

0

試試這個

Date date1 = new SimpleDateFormat("MMddyyyySSS").parse(strDate1); 

希望它會爲12302012235的作品,但我認爲235毫秒。

0

你可以試試下面的代碼:

private Date getGMTDate(long date) { 
    SimpleDateFormat dateFormatGmt = new SimpleDateFormat(
      "yyyy-MMM-dd HH:mm:ss"); 
    dateFormatGmt.setTimeZone(TimeZone.getTimeZone("GMT")); 
    SimpleDateFormat dateFormatLocal = new SimpleDateFormat(
      "yyyy-MMM-dd HH:mm:ss"); 

    Date temp = new Date(date); 

    try { 
     return dateFormatLocal.parse(dateFormatGmt.format(temp)); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 
    return temp; 
} 

我希望這會幫助你。

2

試試這個,

SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd"); 
    Date dateD=new Date(); 
    dateD.setTime(LongTime); 
    date=dateFormat.format(dateD); 
0

我得到了answer.actually我想的字符串轉換日期僅比較values.since只要我得到的價值我直接使用功能的compareTo做this.avoided長轉換爲字符串和字符串日期conversion.thank大家支持。

+0

這個很長的值實際上是以毫秒爲單位的時間我猜! – Android 2012-08-01 08:37:26

4

試試下面的代碼段:

 Calendar c = Calendar.getInstance(); 
     c.setTimeInMillis(Long.parseLong(val));   
     Date d = (Date) c.getTime();   
     SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");  
     String time = format.format(d);//this variable time contains the time in the format of "day/month/year".  
1

的Java 8,轉換長毫秒日期由給定的日期格式模式字符串。如果你有一個很長的毫秒,並想在指定的時區和模式中將它們轉換爲日期字符串,那麼你可以使用它: -

dateInMs是DateTime的一個長整型值。

DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss") 
        .format(Instant.ofEpochMilli(dateInMs).atZone(ZoneId.of("Europe/London")))