2014-04-22 57 views
0

我想將簡單時間格式轉換爲毫秒。我已經說了一次3:14,我想將它轉換爲毫秒。我有這個代碼,但它給了我一個負值。將時間格式轉換爲毫秒Android

SimpleDateFormat format = new SimpleDateFormat("HH:mm"); 
Date d = format.parse("3:14"); 
long time = time.getTime(); 
+1

我複製了你寫的代碼,並得到'time == 8040000'。我有一個問題,但是你想從哪個日期開始轉換爲毫秒?因爲你創建的'd'對象是1970年1月1日3:14,我相信你想要在同一天00:00開始的那個毫秒。那是對的嗎? – lagunex

+0

ya as lagunex says what date you want it it is –

+0

當問這種問題時,張貼實際值,例如您提到的負數。 –

回答

2

說明

我的猜測......如果你忘記指定一個時區。因此,在將字符串解析爲Date實例時應用了JVM的默認時區。日期包含日期和時間部分。沒有日期部分,該課程假定您的意思是epoch,first moment of 1970UTC。我敢打賭,您的默認時區在UTC後面超過3小時。因此,當調整到您的時區時,結果是1969年的日期時間。這樣的日期時間(出現在時代之前)用負數表示。

經驗教訓

(A)Specify一個time zone而不是依賴於隱含的默認。 (B)避免出現臭名昭着的java.util.Date和.Calendar類。使用Joda-Time庫。 (C)如果你想用一段時間工作,沒有日期,使用Joda-Time LocalTime類。

0

要獲得毫秒1970-01-01以來,直到當前的日期只使用

System.currentTimeMillis(); 

如果你想獲得午夜以來已通過毫秒,那麼你已經獲得的時間和午夜減去目前的時間。這裏是完整的例子。

// current time 
Calendar today = Calendar.getInstance(); 

// Set the hour to midnight up to the millisecond 
today.set(Calendar.HOUR_OF_DAY,0); 
today.set(Calendar.MINUTE,0); 
today.set(Calendar.SECOND,0); 
today.set(Calendar.MILLISECOND,0); 

// compute currenttime - midnight to obtain the milliseconds of today 
long milliseconds = System.currentTimeMillis()-today.getTimeInMillis();