gpt4 book ai didi

javascript - 为什么我在 javascript 中得到奇怪的日期?

转载 作者:行者123 更新时间:2023-12-01 00:32:38 24 4
gpt4 key购买 nike

我正在使用 javascript 日期,并尝试以我自己的格式(YYYY-MM-DD)获取它。不过,我可以管理格式,但问题是我提前了一天。例如:如果当天是 3(今天),则使用此代码我将得到 4。

let currentDate = new Date(currentForm['dobs']);
let middleDate = currentDate.toLocaleDateString().split('-');
let finalDate = middleDate[0] + '-' + middleDate[1] + '-' + (middleDate[2] - 1);
console.log(finalDate);

在这里,在currentDate中,我得到的日期为:2051-06-30T18:15:00.000Z

但是,在 finalDate 中,我得到 2049-6-31

忽略语法,为什么我会提前一天?如何获得正确的日期?

最佳答案

几年前我曾经有过这个问题,原因很简单。这是因为日期值末尾的“Z”字符,因为对于 .toLocaleDateString() 函数(假设您没有指定参数,这里有更多 info )意味着该值位于 UTC+0区域,并且由于某种原因总是有一天让你头疼。

解决方案:要解决这个问题,您有很多选择,但也许最简单的一种就是自己格式化日期,如下所示:

function lz(n){return n<10 ? '0'+n : n}
var d = new Date('2019-01-01T00:00:00Z');
var formatted = d.getUTCFullYear()+'-'
+ lz(d.getUTCMonth()+1)+'-'
+ lz(d.getUTCDate())+' '
+ lz(d.getUTCHours())+':'
+ lz(d.getUTCMinutes())+':'
+ lz(d.getUTCSeconds());

或者您可以使用第三方库,例如 moment.js顺便说一句,这很受欢迎。这是link了解更多信息。

编辑:

很抱歉,我省略了一部分代码,因为我直接从我的一个项目中获取了它。请按照上面的代码或者在这个fiddle中测试一下.

关于javascript - 为什么我在 javascript 中得到奇怪的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58386938/

24 4 0