JS 日期格式给出 -1 天
JS date format gives -1 day
我想用 toIsoString 函数格式化我的日期,但是函数 returns -1 day 如何解决? event.value 格式为 Tue Apr 19 2022 00:00:00 GMT+0400 (Armenia Standard Time)
console.log(new Date(event.value).toISOString().slice(0,10))
在控制台中,我得到了这个 2022-04-18
你怎么能看到结果是 -1 天
startDateChange(event: any): void{
this.firstDayOfMonth = event;
console.log(new Date(event.value).toISOString().slice(0, 10));
}
这是因为您的时区设置。当您在您的时区使用 +0400
时,toISOString
总是返回 +0000
。这实际上减少了 4 小时,导致前一天 20:00 小时。
您可以尝试通过在日期中添加 Z 将时区偏移设置为 0 来解决此问题,如第二个示例所示。
第三个示例是一种安全的方法,但如果需要,您需要在前面加上 0。
另一种选择是使用像 Moment.js 这样的 date-library,尽管 moment 已被弃用(我不确定最好的选择是什么,这取决于您)。
// Your example (this might work for some people that are in the +0000 timezone)
console.log(new Date('2021-03-03T00:00:00').toISOString().slice(0,10));
// Second example
console.log(new Date('2021-03-03T00:00:00z').toISOString().slice(0,10));
// Third example
const date = new Date('2021-03-03T00:00:00');
const year = date.getFullYear();
const month = date.getMonth() + 1;
const day = date.getDate();
console.log(`${year}-${month}-${day}`);
您可以使用https://day.js.org/
代码:
const dateString = 'Tue Apr 19 2022 00:00:00 GMT+0400 (Armenia Standard Time)'
const date1 = dayjs(dateString).format('YYYY-MM-DD')
console.log(date1)
const date2 = dayjs(dateString).format('YYYY-M-D')
console.log(date2)
<script src="https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.11.0/dayjs.min.js"></script>
我想用 toIsoString 函数格式化我的日期,但是函数 returns -1 day 如何解决? event.value 格式为 Tue Apr 19 2022 00:00:00 GMT+0400 (Armenia Standard Time)
console.log(new Date(event.value).toISOString().slice(0,10))
在控制台中,我得到了这个 2022-04-18
你怎么能看到结果是 -1 天
startDateChange(event: any): void{
this.firstDayOfMonth = event;
console.log(new Date(event.value).toISOString().slice(0, 10));
}
这是因为您的时区设置。当您在您的时区使用 +0400
时,toISOString
总是返回 +0000
。这实际上减少了 4 小时,导致前一天 20:00 小时。
您可以尝试通过在日期中添加 Z 将时区偏移设置为 0 来解决此问题,如第二个示例所示。
第三个示例是一种安全的方法,但如果需要,您需要在前面加上 0。
另一种选择是使用像 Moment.js 这样的 date-library,尽管 moment 已被弃用(我不确定最好的选择是什么,这取决于您)。
// Your example (this might work for some people that are in the +0000 timezone)
console.log(new Date('2021-03-03T00:00:00').toISOString().slice(0,10));
// Second example
console.log(new Date('2021-03-03T00:00:00z').toISOString().slice(0,10));
// Third example
const date = new Date('2021-03-03T00:00:00');
const year = date.getFullYear();
const month = date.getMonth() + 1;
const day = date.getDate();
console.log(`${year}-${month}-${day}`);
您可以使用https://day.js.org/
代码:
const dateString = 'Tue Apr 19 2022 00:00:00 GMT+0400 (Armenia Standard Time)'
const date1 = dayjs(dateString).format('YYYY-MM-DD')
console.log(date1)
const date2 = dayjs(dateString).format('YYYY-M-D')
console.log(date2)
<script src="https://cdnjs.cloudflare.com/ajax/libs/dayjs/1.11.0/dayjs.min.js"></script>