У меня проблема с локальной отладкой. У меня есть удаленный сервер, который настроен на UTC. Мое приложение ведет ежедневный текущий счет, и я рассчитываю его, беря все значения для конкретного человека, прошедшего определенную дату оборота. Для моего приложения это 1:00 CST или 6:00 UTC. Проблема, с которой я сталкиваюсь, заключается в том, что если мой локальный компьютер настроен на CST, то логика момента времени испорчена, потому что начало дня (1:00) вычисляется на основе времени CST вместо времени UTC.
Если я изменю время своего локального компьютера на UTC, тогда логика внешнего интерфейса больше не будет иметь смысла, поскольку я позволяю внешнему интерфейсу преобразовывать даты в любое местное время пользователя. В основном мне нужно смоделировать 2 сервера, работающих в разное время. Кто-нибудь знает способ сделать это?
Начало дня рассчитывается следующим образом:
const moment = require('moment');
module.exports = function getStartOfDay(){
//set the start of the day to central standard time. It defaults to
//UTC 0 otherwise;
let now = moment();
let cst = moment(now).subtract(6, 'hours');
let midnight = moment(cst).startOf('day');
let START_OF_DAY = moment(midnight).add(6, 'hours').utc();
let START_OF_WEEK = moment(cst).startOf('week').add(6, 'hours').utc();
let START_OF_MONTH = moment(cst).startOf('month').add(6, 'hours').utc();
return {now, cst, midnight, START_OF_DAY, START_OF_WEEK, START_OF_MONTH}
};
сначала я получу фактический момент,
затем я вычитаю 6 часов, чтобы убедиться, что правильный день рассчитан
затем я получаю начало этого дня и, наконец, добавляю к нему 6 часов, чтобы компенсировать смещение UTC
как вы можете видеть, если мой локальный компьютер работает во время CST, тогда строка:
let now = moment();
будет неправильно