datestr в MATLAB для Java

Если вы используете Mozilla Firefox, он будет работать как ожидалось без каких-либо проблем;

P.S. Даже IE_Edge работает отлично, удивительно !!

0
задан mino 13 July 2018 в 15:23
поделиться

2 ответа

    // 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.

2
ответ дан Ole V.V. 17 August 2018 в 12:30
поделиться

Формат 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
1
ответ дан Riley Jacob 17 August 2018 в 12:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: