Если вы используете Mozilla Firefox, он будет работать как ожидалось без каких-либо проблем;
P.S. Даже IE_Edge работает отлично, удивительно !!
// Matlab epoch is January 0, 0000, so subtract 1 day from January 1:
Instant matlabEpoch = Instant.parse("0000-01-01T00:00:00Z").minus(1, ChronoUnit.DAYS);
Instant inst = matlabEpoch.plusMillis(
Math.round(732161.8561226851 * TimeUnit.DAYS.toMillis(1)));
System.out.println(inst);
Это печатает:
2004-08-02T20: 32: 49Z
Надеюсь, что ответ @Riley Jacob , и видим, что он использует длинный устаревший класс
Date
. Поэтому я хотел дать современную версию того же ответа. Помимо исключения старомодного класса, у него также есть преимущество оставлять большую часть вычислений библиотечным методам, что, в свою очередь, дает более четкий код.Я считаю, что стоит отметить тот же результат, что и Matlab с миллисекундной точностью. Если результат был за один миллисекунд, он был бы напечатан как
2004-08-02T20:32:48.999Z
или2004-08-02T20:32:49.001Z
.Ссылка: Учебник Oracle: Дата Время , объясняющее, как использовать
java.time
.
Формат MATLAB DateNumber
: количество дней, прошедших с 0 января 0000 года. Вы можете использовать toUTCString
Java с некоторыми изменениями:
var d = new Date(dateMATLAB*86400000-62167305600000);
var n = d.toUTCString();
Где dateMATLAB
- дата MATLAB вывод. Значение 62167305600000
- это число миллисекунд, которое прошло между 0 и 1970 годами. Используя ваш пример,
var d = new Date(732161.8561226851*86400000-62167305600000);
var n = d.toUTCString();
Выведет
Mon, 02 Aug 2004 20:32:48 GMT