2013-09-24 48 views
4

我正在使用Java日期,我無法擺脫此問題。 在我的文件中的時間值保存象(HH:MM:SS)如何將負毫秒轉換爲Java中的正確時間區域

00:00:08下面 是代碼和輸出..

String timeinsec = "00:00:08"; 
    DateFormat df = new SimpleDateFormat("hh:mm:ss"); 
    Date time = df.parse(timeinsec); 

發生了什麼事是,當我分配值和時間變量。 time.fastTime變量顯示 「-17992000」

當我將此值轉換回HH:MM:SS時,它顯示我。 「-4:-59:-51」

任何人都可以幫助解決TimeZone問題。 我當前時區爲GMT + 5

+0

可以顯示轉換回模式 – newuser

+0

您正在嘗試解析一天的時間,一個完整日期。這是行不通的。 –

回答

3

試試這個;

int day = (int) TimeUnit.SECONDS.toDays(seconds); 
long hours = TimeUnit.SECONDS.toHours(seconds) - (day * 24); 
long minute = TimeUnit.SECONDS.toMinutes(seconds) - (TimeUnit.SECONDS.toHours(seconds) * 60); 
long second = TimeUnit.SECONDS.toSeconds(seconds) - (TimeUnit.SECONDS.toMinutes(seconds) * 60); 
2

這裏是轉換回代碼:

Date new_time = Time_array.get(0).time; //-17992000 stored in "fastTime" variable 
long diff = ((long)new_time.getTime()); //TimeUnit.MILLISECONDS 

long diffSeconds = diff/1000 % 60; 
long diffMinutes = diff/(60 * 1000) % 60; 
long diffHours = diff/(60 * 60 * 1000) % 24; 
String hms = String.format("%d:%02d:%02d", diffHours, diffMinutes, diffSeconds); 

在dubug:HMS的價值= -4:-59:-51

0

hh是1〜12。您應該使用HH(0〜23)

String timeinsec = "00:00:08"; 
DateFormat df = new SimpleDateFormat("HH:mm:ss"); 
Date time = df.parse(timeinsec); 
2

我嘗試不同的方式所以最後我寫了這個代碼和我的要求得到滿足。

Calendar cal = Calendar.getInstance(); 
String timeinsec = "00:00:08"; 
DateFormat df = new SimpleDateFormat("hh:mm:ss"); 
Date time = df.parse(timeinsec); 
cal.setTime(time); 
hms = String.format("%d:%02d:%02d", cal.get(Calendar.HOUR), cal.get(Calendar.MINUTE), cal.get(Calendar.SECOND)); 

產量爲:00:00:08