Я запускаю приложение на основе платформы Google Firebase, используя несколько облачных функций. Все работает нормально, но я просто не могу заставить работать локализацию дат. Я сделал тестовую функцию (см. Ниже), где я попробовал все, что мог придумать, чтобы увидеть, как можно получить правильно отформатированную дату из платформы, но ничего не получалось.
Дата просто продолжает форматироваться и смещаться к UT C Я верю (см. ответ ниже).
Есть ли что-то, что я пропускаю? Есть ли другие предложения, которые я мог бы попробовать?
Я развернул функцию в "europe-west1" (которая должна уже быть в том часовом поясе, который я хочу ...: D), используя Node.js 10 ( бета) бегун (Я также запустил функцию в Node.js 8 с тем же результатом) Мои зависимости на момент написания статьи следующие версии:
"date-fns": "^2.11.0",
"firebase-admin": "^8.10.0",
"firebase-functions": "^3.5.0",
"moment": "^2.24.0",
Если бы кто-то мог пролить свет на это, это было бы УДИВИТЕЛЬНО!
import moment from "moment";
import "moment/locale/nl-be";
import { format, parseISO } from "date-fns";
import nl from "date-fns/locale/nl";
moment.locale("nl-be");
exports.test = functions
.region("europe-west1")
.https.onRequest(async (req, res) => {
const input = "2020-02-04T15:00:00+01:00";
const now = new Date();
return res.status(200).send({
expectedResult: "04/02/2020 15:00",
locales: moment.locales(),
locale: moment.locale(),
original: input,
formatted: moment(input).format(),
basic: moment(input).format("L HH:mm"),
utc: moment.utc(input).format("L HH:mm"),
basicLocal: moment(input).local().format("L HH:mm"),
utcLocal: moment.utc(input).local().format("L HH:mm"),
forcedLocale: moment(input).locale("nl-be").format("L HH:mm"),
utcForcedLocale: moment.utc(input).locale("nl-be").format("L HH:mm"),
parsedDate: parseISO(input),
dateFnsNoLocal: format(parseISO(input), "dd/MM/yyyy HH:mm"),
dateFns: format(parseISO(input), "dd/MM/yyyy HH:mm", {
locale: nl,
}),
now: now.toLocaleString("nl-BE"),
nowMoment: moment(now).format(),
nowMomentFormat: moment(now).format("L HH:mm"),
});
});
ответ:
{
"expectedResult": "04/02/2020 15:00",
"locales": [
"en",
"nl-be"
],
"locale": "nl-be",
"original": "2020-02-04T15:00:00+01:00",
"formatted": "2020-02-04T14:00:00+00:00",
"basic": "04/02/2020 14:00",
"utc": "04/02/2020 14:00",
"basicLocal": "04/02/2020 14:00",
"utcLocal": "04/02/2020 14:00",
"forcedLocale": "04/02/2020 14:00",
"utcForcedLocale": "04/02/2020 14:00",
"parsedDate": "2020-02-04T14:00:00.000Z",
"dateFnsNoLocal": "04/02/2020 14:00",
"dateFns": "04/02/2020 14:00",
"now": "4/17/2020, 1:55:52 PM",
"nowMoment": "2020-04-17T13:55:52+00:00",
"nowMomentFormat": "17/04/2020 13:55"
}
Код дает мне правильные результаты, когда я запускаю его, например, в коде sandebox: https://codesandbox.io/s/nostalgic-germain-b1vty?file= / src / index. js