瞬间过去,并将日期提前一天保存到服务器

时间:2019-06-20 12:36:39

标签: angular date momentjs

我正在与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) 

然后再次添加时区。我希望它在后端以Date格式传递2019年6月20日,而没有时区,因为我无法将myDate对象转换为字符串或任何其他格式。

如何转换?

2 个答案:

答案 0 :(得分:0)

您需要使用new Date().toISOString()将不带时区的日期保存在数据库中。

答案 1 :(得分:0)

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日期,并且可以正常工作。