我正在Ionic 4应用程序中工作,并且为此使用了本机datepicker,并将日期转换为toISOString()
,但问题是它显示在前一天。
这是我的ts:
this.datePicker.show({
date: new Date(),
mode: 'date',
androidTheme: this.datePicker.ANDROID_THEMES.THEME_HOLO_DARK,
}).then(
date => {
me.acceptchallengeform.setValue({
startchallenge: new Date(date).toISOString().split('T')[0],
});
console.log('Got date: ', date)},
err => {
console.log('Error occurred while getting date: ', err)}
);
var DatePickerDate ='2018年8月9日星期四00:00:00 GMT + 0100(英国夏令时)';
var myDate = new Date(DatePickerDate).toISOString()。split('T')[0];
所以myDate现在是2018-08-08
问题在于它显示的是前一天的日期。
但是我想显示确切的选择日期。
非常感谢您的帮助。
答案 0 :(得分:1)
new Date()使用您的系统时区返回日期。
toISOString()以UTC返回日期,而您的日期中的时间部分是午夜,因此返回Thu Aug 08 2018 23:00:00 (BST-1h),这就是为什么您要提前一天。
您到底想做什么?
在评论后编辑我的答案
在您的情况下,我会选择简单的方法,因为您显然不需要任何时区信息:
开始挑战:date.getFullYear()+'-'+ date.getMonth()+'-'+ date.getDate();
答案 1 :(得分:0)
尝试一下:
date = new Date(date.setDate(date.getDate() + 1));
me.acceptchallengeform.setValue({
startchallenge: new Date(date).toISOString().split('T')[0],
});
这将解决您的问题。