我选择的日期显示在 Ionic 4 的前一天

My selected date is showing one day before in Ionic 4

我在我的 Ionic 4 应用程序中工作,为此我使用了本机日期选择器,我正在将日期转换为 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 ='Thu Aug 09 2018 00:00:00 GMT+0100 (British Summer Time)';

var myDate = new Date(DatePickerDate).toISOString().split('T')[0];

所以我的日期现在是 2018-08-08

问题是它显示的是前一天的日期。

但我想显示确切的选定日期。

非常感谢任何帮助。

new Date() return 使用系统时区的日期。

toISOString() return UTC 日期和日期的时间部分是午夜,所以 returns Thu Aug 08 2018 23:00:00 (BST - 1h),这就是为什么你要提前一天。

你到底想做什么?

Editing my answer following comment

  • 在你的情况下,我会选择简单的方法,因为你显然不需要任何时区信息:

    开始挑战:date.getFullYear() + '-' + date.getMonth() + '-' + date.getDate();

试试这个:

date = new Date(date.setDate(date.getDate() + 1));
me.acceptchallengeform.setValue({
   startchallenge: new Date(date).toISOString().split('T')[0], 
});

这将解决您的问题。