2013-09-24 2 views
4

Я работаю с датами Java, я не могу выбраться из этой проблемы. В моем файле значение времени сохраняется как (HH: MM: SS)Как преобразовать отрицательные миллисекунды в правильное времяZone в Java

00:00:08 Ниже приведен код и выход ..

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

То, что произошло, когда я присвоено значение и временные переменные. time.fastTime variable show "-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 is 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

Смежные вопросы