JS Date Объекты без значений TimeStamp неправильно возвращаются на один день - PullRequest
0 голосов
/ 04 февраля 2019

В выводе терминала ниже - - (полученные) объекты генерируются путем преобразования объектов moment.js обратно в объекты Date.+ (Ожидаемые) объекты создаются в формате new Date("2018-05") и, по-видимому, теряют достаточно часов, чтобы вернуться к 17:00 в последний день предыдущего месяца:

        Object {
    -     "x": 2018-05-01T00:00:00.000Z,
    +     "x": 2018-04-30T17:00:00.000Z,
          "y": 260,
        },
        Object {
    -     "x": 2018-06-01T00:00:00.000Z,
    +     "x": 2018-05-31T17:00:00.000Z,
          "y": 160,
        },
        Object {
    -     "x": 2018-07-01T00:00:00.000Z,
    +     "x": 2018-06-30T17:00:00.000Z,
          "y": 40,
        },

И код теста, и тесткод ожидания находится на моем компьютере, поэтому я не понимаю, почему объекты даты слегка меняются, кто-нибудь знает, почему?Вот мой тестовый код шутки:

test('raw data is properly totalled (prepareData)', () => {
  expect(lineChart.prepareData(mockXYObjects(dataCloneMultiplier), 12, "month"))
    .toStrictEqual([
      {x : new Date("2018-05"), y : 13 * dataCloneMultiplier},
      {x : new Date("2018-06"), y : 8 * dataCloneMultiplier},
      {x : new Date("2018-07"), y : 2 * dataMultiplier},
    ])
});

1 Ответ

0 голосов
/ 04 февраля 2019

Полагаю, вы живете в Западном полушарии?Без отметки времени объекты Date инициализируются по времени UTC, а не в вашем часовом поясе.Таким образом, в UTC будет полночь, но если вы находитесь в восточном часовом поясе, это будет 19:00 в предыдущий день.Решение заключается в добавлении желаемого часового пояса в строку даты при его создании.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...