Получение d.getTime не является функцией - PullRequest
0 голосов
/ 11 июня 2018

Я пытаюсь получить значение Date для Timestamp.Я хочу получить UTC эквивалентное значение даты, поскольку текущая рабочая реализация использует мой местный часовой пояс.Я нашел этот очень крутой метод, который делает это toUTCString()

Учитывая следующую строку кода:

console.log("new Date(data[i].time).toUTCString()" , new Date(data[i].time).toUTCString());
console.log("new Date(data[i].time)" , new Date(data[i].time))
tempData.push(Object.assign({}, data[i], {'date': new Date(data[i].time).toUTCString()}));

Где консольный журнал возвращает следующее, и я получаю преобразованный результат:

new Date(data[i].time).toUTCString() Wed, 06 Jun 2018 03:50:00 GMT
new Date(data[i].time) Wed Jun 06 2018 11:50:00 GMT+0800 (+08)

Дает мне это сообщение об ошибке:

Uncaught (in promise) TypeError: d.getTime is not a function

В качестве дальнейшего исследования некоторые ответы SO указывают на проблему, потому что это строковое значение, но я думаю, что я использую правильный метод для его преобразованияна UTC.

Я что-то здесь упускаю?Спасибо!

У меня есть файл, автоматически сгенерированный, когда я запускаю webpack, и это строки, куда я направляюсь, основываясь на ошибке.

var discontinuousIndexCalculator = (0, _utils.slidingWindow)().windowSize(2).undefinedValue(function (d, idx, di) {
    var i = di;
    var row = {
        date: d.getTime(),
        startOf30Seconds: false,
        startOfMinute: false,
        startOf5Minutes: false,
        startOf15Minutes: false,
        startOf30Minutes: false,
        startOfHour: false,
        startOfEighthOfADay: false,
        startOfQuarterDay: false,
        startOfHalfDay: false,
        startOfDay: true,
        startOfWeek: false,
        startOfMonth: false,
        startOfQuarter: false,
        startOfYear: false
    };
    var level = evaluateLevel(row, d, i);
    return _extends({}, row, { index: i }, level);
});

Ответы [ 2 ]

0 голосов
/ 11 июня 2018

Нашел именно то, что мне нужно, и в ответе, и в комментарии Тима здесь .Не может быть лучшим решением, но это работает.Это фактически дает мне нужный мне объект Date, а не строковое значение.

Я использую: new Date(new Date().toUTCString().substr(0, 25));

0 голосов
/ 11 июня 2018

Вы можете попробовать что-то похожее на это.

const data = [
 {
  time:new Date().getTime()
 },
 {
  time:new Date().getTime()
 },
 {
  time:new Date().getTime()
 },
 {
  time:new Date().getTime()
 },
 {
  time:new Date().getTime()
 }
];

const dataWithString = [];

for(let i = 0; i< data.length;i++){
   console.log(new Date(data[i].time).toUTCString()); //Something similar has you have
   
   //Solution 1 create an other array and save the index to map each array;
   dataWithString.push({
    dateString:new Date(data[i].time).toUTCString(),
    index:i
  });
  
  //Solution 2
  data[i].dateString = new Date(data[i].time).toUTCString();
}

console.log("Results");
console.log(dataWithString);
console.log(data);
...