我想將簡單時間格式轉換爲毫秒。我已經說了一次3:14,我想將它轉換爲毫秒。我有這個代碼,但它給了我一個負值。將時間格式轉換爲毫秒Android
SimpleDateFormat format = new SimpleDateFormat("HH:mm");
Date d = format.parse("3:14");
long time = time.getTime();
我想將簡單時間格式轉換爲毫秒。我已經說了一次3:14,我想將它轉換爲毫秒。我有這個代碼,但它給了我一個負值。將時間格式轉換爲毫秒Android
SimpleDateFormat format = new SimpleDateFormat("HH:mm");
Date d = format.parse("3:14");
long time = time.getTime();
我的猜測......如果你忘記指定一個時區。因此,在將字符串解析爲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
類。
要獲得毫秒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();
我複製了你寫的代碼,並得到'time == 8040000'。我有一個問題,但是你想從哪個日期開始轉換爲毫秒?因爲你創建的'd'對象是1970年1月1日3:14,我相信你想要在同一天00:00開始的那個毫秒。那是對的嗎? – lagunex
ya as lagunex says what date you want it it is –
當問這種問題時,張貼實際值,例如您提到的負數。 –