Прохождение момента и сохранение за день до даты на сервере - PullRequest
1 голос
/ 20 июня 2019

Я работаю с проектом Angular 7. Мы используем matDatepicker для выбора даты.

Когда выбрана дата, скажем, сегодняшняя дата, она устанавливается правильно в угловом объекте Date, т.е.

Дата myDate

Moment {_isAMomentObject: true, _i: {…}, _isUTC: false, _pf: {…}, _locale: Locale, …}
_d: Thu Jun 20 2019 00:00:00 GMT+0530 (India Standard Time) {}
_i: {year: 2019, month: 5, date: 20}
_isAMomentObject: true
_isUTC: false
_isValid: true
_locale: Locale {_calendar: {…}, _longDateFormat: {…}, _invalidDate: "Invalid date", ordinal: ƒ, _dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, …}
_pf: {empty: false, unusedTokens: Array(0), unusedInput: Array(0), overflow: -1, charsLeftOver: 0, …}
__proto__: Object

Я знаю, что это связано с часовым поясом, и я не хочу, чтобы он сохранялся в базе данных за день до даты.

Итак, я преобразовал дату как:

var datePipe = new DatePipe('en-US');
let dtStr = datePipe.transform(myDate, 'dd-MMM-yy'); -> 20-Jun-2019

Но мне снова нужно преобразовать его в объект Date, поскольку я должен сохранить его в бэкэнде, поэтому я попытался:

Date convertDate = new Date(dtStr)
Thu Jun 20 2019 00:00:00 GMT+0530 (India Standard Time) 

Затем снова добавляется часовой пояс. Я хочу, чтобы он прошел 20 июня 2019 года в формате Date в серверной части без часового пояса, поскольку я не могу преобразовать объект myDate в строку или любой другой формат.

Как я могу преобразовать это?

Ответы [ 2 ]

0 голосов
/ 24 июня 2019
import * as moment from "moment";



let momentToDate = moment(myDate).toDate();
myDate = new Date(Date.UTC(momentToDate.getFullYear(), momentToDate.getMonth(), momentToDate.getDate(), momentToDate.getHours(), momentToDate.getMinutes(), momentToDate.getSeconds()));

Теперь объект myDate конвертируется в дату UTC и работает нормально.

0 голосов
/ 20 июня 2019

Вам необходимо сохранить дату без часового пояса в базе данных, используя new Date().toISOString().

...