2011-04-11 112 views
0

嗨,所有即時通訊有問題將日期和時間轉換爲毫秒可以任何人請幫助我它代碼中沒有錯誤,但它返回的錯誤日期和時間以毫秒爲單位android returing時間戳以毫秒爲單位

這是即時通訊轉換日期:2011-03-01 17:55:15 及其給我這個號:-679019461843345152

,這是使用的代碼IM:

public long getDate(String s){ 
     //this is returning a timestamp but the wrong ones!!! 

     String[] formats = new String[] { 
       // "yyyy-MM-dd", 
       "yyyy-MM-dd HH:mm:ss" 
       // "yyyy-MM-dd HH:mmZ", 
       //"yyyy-MM-dd HH:mm:ss.SSSZ", 
      }; 

     SimpleDateFormat sdf=null; 
     String st; 

     for (String format : formats) { 
       sdf = new SimpleDateFormat(format, Locale.US); 
       //System.err.format("%30s %s\n", format, sdf.format(new Date(0))); 

       sdf.setTimeZone(TimeZone.getTimeZone("UTC")); 
       st = new String(sdf.format(new Date(0))); 
       System.err.format(format, st); 
     } 


     // compute nanoseconds from y, m... 

     //return that number 
     Calendar c = Calendar.getInstance(); 
      c.set(sdf.YEAR_FIELD, sdf.MONTH_FIELD, sdf.DATE_FIELD, sdf.HOUR0_FIELD, sdf.MINUTE_FIELD, sdf.SECOND_FIELD); 
      return c.getTimeInMillis() * 1000000; 

    } 

回答

2

線c.set不作任何仙SE:

c.set(sdf.YEAR_FIELD, sdf.MONTH_FIELD, sdf.DATE_FIELD, sdf.HOUR0_FIELD, sdf.MINUTE_FIELD, sdf.SECOND_FIELD); 

這應該給你一個想法:

 Calendar c = Calendar.getInstance(); 
     try { 
      dt = sdf.parse("2011-03-01 17:55:15"); 
     } catch (ParseException e) { 
      System.err.println("There's an error in the Date!"); 
      return null; 
     } 
     Date dt = sdf.parse("2011-03-01 17:55:15"); 
     c.setTime(dt); 
     System.out.println(c.getTimeInMillis() * 1000000); 
     System.out.println(dt.toString()); 

輸出:

1299002115000000000 
Tue Mar 01 12:55:15 EST 2011 

順便說一句,你永遠不會訪問參數s。

+0

非常感謝,但即時通訊有一個小問題,當我添加了什麼你發送到我的代碼它告訴我一個錯誤它說這個日期的未處理的異常類型ParseException dt = sdf.parse(s) – moe 2011-04-11 03:41:12

+0

通常每函數解析文本將需要在try-catch塊內,以處理意外的字符串。我會更新答案,向您展示一個例子。 – Aleadam 2011-04-11 03:44:34

+0

好吧,我得到了相同的結果,你得到了,並感謝你的幫助很多,但我有1最後一個問題,你進入的時間是17:55:15你得到的結果是我得到的是12:55 :15 .... ???? – moe 2011-04-11 04:51:30

相關問題