Невозможно создать объект даты с часовым поясом около UTC в Лямбде - PullRequest
1 голос
/ 17 октября 2019

У меня есть лямбда, написанная на Node.js. Передается строка даты и времени часового пояса Америки / Нью-Йорка:

exports.handler = async (event) => {
    // Stub out the response object
    const response = {
        statusCode: 200,
        body: ""
    };

    const thingAsString = event.body.date; //This is a date/time expressed in local time
    const thingAsObject = new Date(thingAsString); //This is the date/time with a TZ of UTC.

    console.log("Before: %s", thingAsString );
    console.log("After: %s", thingAsObject.toISOString());

    return response;
};

Проблема в том, что когда я пытаюсь превратить его в объект даты / времени, он принимает часовой пояс как UTC.

enter image description here

Есть ли способ превратить это в объект даты, где часовой пояс не устанавливается сразу по UTC?

Я пробовал некоторые варианты сmoment и monent-timezone, но у меня та же проблема:

const original_date_string = "2019/10/15 14:21:14";
const original_date_object = new Date(original_date_string);
const original_date_object_est = moment.tz(original_date_object, 'America/New_York');
console.log("Original: %s", original_date_string);
console.log("UTC: %s", original_date_object_est.utc().toISOString());

enter image description here

1 Ответ

1 голос
/ 17 октября 2019

Укажите формат даты и часовой пояс для создания следующим образом ...

const mtz = require('moment-timezone');
const moment = require('moment');

exports.handler = async (event) => {
    // Stub out the response object
    const response = {
        statusCode: 200,
        body: ""
    };
    // 2019/10/15 14:21:14
    const thingAsString = event.body.date;
    const thingAsObject = moment.tz(thingAsString, "YYYY/MM/DD HH:mm:ss", 'America/New_York');

    console.log(thingAsObject);
    console.log(thingAsObject.utc());

    return response;
};
...