Moment.js не показывает правильное время - PullRequest
0 голосов
/ 17 апреля 2019

При локальном запуске моего проекта node.js на моем компьютере moment.js показывает правильное время (2019-10-28T07: 00: 00.000Z, потому что момент скорректирован на DST +02: 00 в апреле и +01: 00в октябре)):

Moment {
  _isAMomentObject: true,
  _i: '2019-04-15T06:00:00.000Z',
  _f: 'YYYY-MM-DDTHH:mm:ss.SSSSZ',
  _tzm: 0,
  _isUTC: false,
  _pf:
   { empty: false,
     unusedTokens: [],
     unusedInput: [],
     overflow: -1,
     charsLeftOver: 0,
     nullInput: false,
     invalidMonth: null,
     invalidFormat: false,
     userInvalidated: false,
     iso: true,
     parsedDateParts: [ 2019, 3, 15, 6, 0, 0, 0 ],
     meridiem: undefined,
     rfc2822: false,
     weekdayMismatch: false },
  _locale:
   Locale {
     _calendar:
      { sameDay: '[Today at] LT',
        nextDay: '[Tomorrow at] LT',
        nextWeek: 'dddd [at] LT',
        lastDay: '[Yesterday at] LT',
        lastWeek: '[Last] dddd [at] LT',
        sameElse: 'L' },
     _longDateFormat:
      { LTS: 'h:mm:ss A',
        LT: 'h:mm A',
        L: 'MM/DD/YYYY',
        LL: 'MMMM D, YYYY',
        LLL: 'MMMM D, YYYY h:mm A',
        LLLL: 'dddd, MMMM D, YYYY h:mm A' },
     _invalidDate: 'Invalid date',
     ordinal: [Function: ordinal],
     _dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
     _relativeTime:
      { future: 'in %s',
        past: '%s ago',
        s: 'a few seconds',
        ss: '%d seconds',
        m: 'a minute',
        mm: '%d minutes',
        h: 'an hour',
        hh: '%d hours',
        d: 'a day',
        dd: '%d days',
        M: 'a month',
        MM: '%d months',
        y: 'a year',
        yy: '%d years' },
     _months:
      [ 'January',
        'February',
        'March',
        'April',
        'May',
        'June',
        'July',
        'August',
        'September',
        'October',
        'November',
        'December' ],
     _monthsShort:
      [ 'Jan',
        'Feb',
        'Mar',
        'Apr',
        'May',
        'Jun',
        'Jul',
        'Aug',
        'Sep',
        'Oct',
        'Nov',
        'Dec' ],
     _week: { dow: 0, doy: 6 },
     _weekdays:
      [ 'Sunday',
        'Monday',
        'Tuesday',
        'Wednesday',
        'Thursday',
        'Friday',
        'Saturday' ],
     _weekdaysMin: [ 'Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa' ],
     _weekdaysShort: [ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ],
     _meridiemParse: /[ap]\.?m?\.?/i,
     _abbr: 'en',
     _config:
      { calendar: [Object],
        longDateFormat: [Object],
        invalidDate: 'Invalid date',
        ordinal: [Function: ordinal],
        dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
        relativeTime: [Object],
        months: [Array],
        monthsShort: [Array],
        week: [Object],
        weekdays: [Array],
        weekdaysMin: [Array],
        weekdaysShort: [Array],
        meridiemParse: /[ap]\.?m?\.?/i,
        abbr: 'en' },
     _dayOfMonthOrdinalParseLenient: /\d{1,2}(th|st|nd|rd)|\d{1,2}/ },
  _a: [ 2019, 3, 15, 6, 0, 0, 0 ],
  _d: 2019-10-28T07:00:00.000Z,
  _isValid: true,
  _z: null }

Но на моем сервере я получаю следующее:

Moment {
  _isAMomentObject: true,
  _i: '2019-04-15T06:00:00.000Z',
  _f: 'YYYY-MM-DDTHH:mm:ss.SSSSZ',
     week: [Object],
     weekdays: [Array],
     weekdaysMin: [Array],
     weekdaysShort: [Array],
     meridiemParse: /[ap]\.?m?\.?/i,
     abbr: 'en' },
  _dayOfMonthOrdinalParseLenient: /\d{1,2}(th|st|nd|rd)|\d{1,2}/ },
  _a: [ 2019, 3, 15, 6, 0, 0, 0 ],
  _d: 2019-10-28T06:00:00.000Z,
  _isValid: true,
  _z: null }

Дата неверно установлена ​​на 2019-10-28T06: 00: 00: 000Z.Я установил часовой пояс на сервере с помощью sudo timedatectl set-timezone Europe/Oslo

. Если я использую moment.isDST() для дат на сервере, он правильно отображает true в апреле и false в октябре.

Я не уверен, как решить эту проблему, на сервере или в моем коде?

1 Ответ

1 голос
/ 17 апреля 2019

Я думаю, что решил это.Отвечая на вопросы из Styx, я наконец понял, что серверное приложение, запущенное в док-контейнере, не имеет правильного часового пояса.Установив environment: TZ: "Europe/Oslo" в docker-compose.yml файле, это устранило проблему, и сейчас я получаю правильное время.

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