javascript 如何获得正确的日期?[重复]

mjqavswn  于 2023-03-11  发布在  Java
关注(0)|答案(1)|浏览(92)

此问题在此处已有答案

toISOString() return wrong date(3个答案)
昨天关门了。
我在react/next项目中遇到了一个问题,这是函数:

const handleDateChange = (date) => { 
    console.log(date); // Fri Mar 10 2021 00:00:00 GMT+0100 (Mitteleuropäische Normalzeit) (I get this date from react-calendar component) 

    setWeekDay(date.toISOString().slice(0, 10)); 
    setShowCalendar(!showCalendar);

    console.log(weekDay); // 2021-03-09 WHY? 
};

如你所见,我得到一个字符串,我想把数组的格式改成yyyy-mm-dd,这很好,但是如果我选择,比如10.0.2023,在日历中调用函数,它会改变它,但是输出总是-1,所以我得到的日期是2023-03-09
我研究了几个小时,尝试了不同的方法,但这是我能得到的最接近的方法。有人知道如何修复它吗?

lyr7nygr

lyr7nygr1#

如果你想得到一个yyyy-mm-dd格式的日期,不要试图猜测你需要在字符串中的什么地方切片,只要使用一个日期格式化器就行了,这甚至包括使用内置的date.toLocaleDateString()

console.log(
  (new Date()).toLocaleDateString('de-DE', {
    year: `numeric`,
    month: `2-digit`,
    day: `2-digit`
  }).split(/\D/).reverse().join(`-`)
);

它将日期格式化为“带有非数字分隔符的内容”,所以我们拆分它,反转数组,然后用-将其重新连接起来,使其成为yyyy-mm-dd
如果你 * 只是 * 需要工作日,那么你甚至不需要:直接问就行了。日期里既有“星期几”也有“星期几”。

console.log(`The day of the week for ${new Date()} is ${new Date().getDay()}`);
    console.log(`The day of the month for ${new Date()} is ${new Date().getDate()}`);

相关问题