gpt4 book ai didi

javascript - 获得正确的日期,但是当我推送到我的月份数组时,我得到奇怪的日期输出

转载 作者:行者123 更新时间:2023-11-30 21:18:21 25 4
gpt4 key购买 nike

所以我想做的是创建一个月份数组。但是当我将月份添加到我的月份数组时,我得到了

["一月", "二月", "三月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十二月""]

结果。但在我添加到我的数组之前,月份打印出来很好。

  • 1917 年 1 月 1 日星期一 00:00:00 GMT-0500(美国东部时间)
  • 1917 年 2 月 1 日星期四 00:00:00GMT-0500(美国东部时间)
  • 1917 年 3 月 1 日星期四 00:00:00 GMT-0500(美国东部时间)
  • 4 月 1 日星期日1917 00:00:00 GMT-0400(美国东部时间)
  • >。 . . 1917 年 11 月 1 日星期四 00:00:00 GMT-0400(美国东部时间)
  • 1917 年 12 月 1 日星期六 00:00:00 GMT-0500(美国东部时间)

注意四月和十一月在“原始”输出中。我检查了this similar question和其他人,但他们并不像我想象的那样相似。 2 号“三月”号除外。

如果重要的话,我使用的是 Chrome 版本 59.0.3071.115(官方构建)(64 位)

这是我的代码:

getMonths(form: string = 'long'): string[] {
if (form.toLowerCase() !== 'long' || form.toLowerCase() !== 'short') {
form = 'long';
}
if (!this.yearSelected) { // sets default year to today
this.yearSelected = this.today.getFullYear();
}
let months: string[] = [];
let locale: string = "en-US";
let month: Date;
// console.log(this.selectedYear);
for (let i = 0; i < 12; i++) {
month = new Date(this.yearSelected, i, 1);
console.log(month);
months.push(month.toLocaleString(locale, { month: form }));
console.log(months[i]); // <-getting odd output from here
}

return months;
}

在 for 循环中,我根据提供的链接将 1 添加到“day”参数。但是我原来的代码是

month = new Date(this.yearSelected, i);

如果重要的话。我还在 for 循环末尾评论了(以供指示)有问题的输出。

编辑:刚刚更新到 Chrome 60.0.3112.78

编辑:删除 toLocalLowercase -> toLowercase() 的拼写错误

编辑:所以问题与夏令时有关。感谢 James 的建议,我将 15 添加到 month = new Date(this.yearSelected, i) 因此现在是 month = new Date(this.yearSelected, i, 15)。我会考虑使用 UTC dates - Mozilla link

最佳答案

  • 1917 年 3 月 1 日星期四 00:00:00 GMT-0500(美国东部时间)
  • 1917 年 4 月 1 日星期日 00:00:00 GMT-0400 (EDT)

你在不同的时区,Date 将它们转换为本地时间,它正确地做到了,1917 年 4 月 1 日星期日的 EDT,转换为 EST,是 3 月 31 日 23:00:00,因此你得到 March, March .

这是一个纯粹的 TypeScript 问题以及 TypeScript 如何转换回 JavaScript,TypeScript 与 UTCString 而不是 LocaleTimeString 没有相同的问题。

getMonths(form: string = 'long'): string[] {
if (form.toLowerCase() !== 'long' || form.toLowerCase() !== 'short') {
form = 'long';
}
if (!this.yearSelected) { // sets default year to today
this.yearSelected = this.today.getFullYear();
}
let months: string[] = [];
let locale: string = "en-US";
let month: Date;
// console.log(this.selectedYear);
for (let i = 0; i < 12; i++) {
month = new Date(this.yearSelected, i);
console.log(month);
months.push(month.toUTCString(locale, { month: form }));
console.log(months[i]); // <-getting odd output from here
}

return months;
}

返回:[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“November", "December"] 正如预期的那样

关于javascript - 获得正确的日期,但是当我推送到我的月份数组时,我得到奇怪的日期输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45445670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com