此问题在此处已有答案:
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
。
我研究了几个小时,尝试了不同的方法,但这是我能得到的最接近的方法。有人知道如何修复它吗?
1条答案
按热度按时间lyr7nygr1#
如果你想得到一个yyyy-mm-dd格式的日期,不要试图猜测你需要在字符串中的什么地方切片,只要使用一个日期格式化器就行了,这甚至包括使用内置的
date.toLocaleDateString()
:它将日期格式化为“带有非数字分隔符的内容”,所以我们拆分它,反转数组,然后用
-
将其重新连接起来,使其成为yyyy-mm-dd
。如果你 * 只是 * 需要工作日,那么你甚至不需要:直接问就行了。日期里既有“星期几”也有“星期几”。