我正在与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对象转换为字符串或任何其他格式。
如何转换?
答案 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日期,并且可以正常工作。