#java #excel #datetime #time
#java #excel #дата-время #время
Вопрос:
Я работаю с форматом Excel, где
0.6549
Означает, что мы выполнили 65,49% за день. Как бы мне преобразовать это в приятное время, например
15:30:42 вечера
в Java?
Ответ №1:
Попробуйте это:
public static void main(String[] args) throws Exception {
DateFormat format = new SimpleDateFormat("HH:mm:ss a");
format.setTimeZone(TimeZone.getTimeZone("UTC"));
for(String fracStr : args) {
double frac = Double.parseDouble(fracStr);
long day = (long) Math.floor(frac);
frac = frac - day;
Date time = new Date((long) ( 86400000l * frac));
System.out.println(fracStr " -> " format.format(time));
}
}
Небольшое замечание здесь — часовой пояс GMT может не дать вам ожидаемых результатов, но UTC даст. Это потому, что Java считает GMT допустимой аббревиатурой для Europe / London, а между 1968 и 1972 годами Лондон постоянно переходил на летнее время. Таким образом, полночь 1 января 1970 года по Гринвичу (эпоха Java) также равна 1 часу ночи 1 января 1970 года (GMT).