Как элегантно решить и с помощью JavaScript проблему UTC, которая вычитает день при создании экземпляра Date в формате «2018-10-25»? [Дубликат]

1

Я работаю над унаследованной системой, и в DB день рождения идет таким образом "1992-05-18" в json. Я использую AngularJS и применяя привязку данных этой переменной к input type = "date" формы обновления, необходимо создать экземпляр объекта Date. Как это:

//person.byrthday = '1992-04-26'
var person.birthday = new Date (person.birthday); 
// after person.byrthday = '1992-04-25T00:00:00.000Z'

Как я могу решить эту проблему через Front End элегантным способом, не "сломав" двустороннюю привязку данных?

Я UTC -03:00 в Бразилию UTC -03:00

  • 0
    Лучше всего использовать библиотеку, такую как Moment.js, для обработки дат.
  • 1
    Если ваше смещение равно -0300, то с учетом new Date('1992-04-26') результатом будет дата для '1992-04-26T00: 00: 00.000Z'. Если рассматривать его как UTC, местные даты будут сдвигаться только на смещение часового пояса хоста (очевидно, -0300), которое будет «1992-04-25T21: 00: 00.000-0300».
Теги:
date
utc

1 ответ

1
Лучший ответ

Есть несколько способов решить эту проблему. Быстрое и грязное решение может заключаться в том, чтобы использовать moment.js. Таким образом вы можете преобразовать ответ API в настоящий формат даты.

Если вы не хотите использовать дополнительную библиотеку, вы можете сделать функцию для синтаксического анализа строки даты. Вы можете сделать следующее для синтаксического анализа, чтобы стать правильной датой:

var dateSplit = person.birthday.split('-');
var mydate = new Date(dateSplit[0], dateSplit[1] - 1, dateSplit[2]); 
person.birthday= mydate;

Обратите внимание, что индекс месяца начинается с 0 (aka January = 0). Надеюсь, это поможет.

  • 0
    Я предлагаю вам использовать момент (). Добавить (1, «дней»). Календарь ()?
  • 0
    @ cpll - это не решит проблему ОП.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню