Moment.js - 不同设备上的日期不一致
Moment.js - Inconsistent date on different devices
我在显示日期时遇到了一些问题。当用户select一个日期时,我将其格式化为这样
new Date(date).toISOString().split('T')[0];
因为这是我们的 django 后端期望的格式,然后后端 returns 一个这样的日期:
2021-09-02
然后我将从后端返回的日期格式化为 moment.js:
moment.utc(new Date(date)).format('MMM DD')
但问题是,当我 select“9 月 25 日”时,我得到“9 月 25 日”。
但是我在印度的一些团队成员select“9 月 25 日”他们得到“9 月 24 日”。
如果我 运行 new Date('2021-09-02')
在我的开发工具中。
我得到Wed Sep 01 2021 17:00:00 GMT-0700 (Pacific Daylight Time)
他们得到 Date Thu Sep 02 2021 05:30:00 GMT+0530 (India Standard Time)
我该如何处理这种极端情况?我不确定是否需要更新存储在后端的格式。需要你的建议
这是一个时区问题,问题似乎是您想 select 一个日期(9 月 25 日),但实际上您是 select 一个时间然后转换它到一个字符串来表示一个日期。
当您的用户 select 约会时,您可以让他们 select 日期和月份,而不是整个时间吗?
编辑
嗯,抱歉,问题不在于 selecting 日期,而是在于将从您的服务器返回的日期转换回时间。但你不想要时间,你只想要约会。
您的服务器正在返回类似“2021-09-25”的字符串来表示“9 月 25 日”。您可以解析此字符串并获取重要部分:
function displayDayMonth(date) {
const [_year, month, day] = date.split("-").map(s => parseInt(s, 10));
const months = ["Jan", "Feb", //... etc ];
return `${months[month - 1]} ${day}`;
}
const date = "2021-09-25";
displayDayMonth(date);
// => "Sep 25"
另一方面,如果时间真的很重要怎么办?如果太平洋时间的事件发生在 9 月 25 日,那么该事件的很大一部分发生在印度的 9 月 24 日。也许您没有捕捉到有关该事件的足够细节?
我在显示日期时遇到了一些问题。当用户select一个日期时,我将其格式化为这样
new Date(date).toISOString().split('T')[0];
因为这是我们的 django 后端期望的格式,然后后端 returns 一个这样的日期:
2021-09-02
然后我将从后端返回的日期格式化为 moment.js:
moment.utc(new Date(date)).format('MMM DD')
但问题是,当我 select“9 月 25 日”时,我得到“9 月 25 日”。
但是我在印度的一些团队成员select“9 月 25 日”他们得到“9 月 24 日”。
如果我 运行 new Date('2021-09-02')
在我的开发工具中。
我得到Wed Sep 01 2021 17:00:00 GMT-0700 (Pacific Daylight Time)
他们得到 Date Thu Sep 02 2021 05:30:00 GMT+0530 (India Standard Time)
我该如何处理这种极端情况?我不确定是否需要更新存储在后端的格式。需要你的建议
这是一个时区问题,问题似乎是您想 select 一个日期(9 月 25 日),但实际上您是 select 一个时间然后转换它到一个字符串来表示一个日期。
当您的用户 select 约会时,您可以让他们 select 日期和月份,而不是整个时间吗?
编辑
嗯,抱歉,问题不在于 selecting 日期,而是在于将从您的服务器返回的日期转换回时间。但你不想要时间,你只想要约会。
您的服务器正在返回类似“2021-09-25”的字符串来表示“9 月 25 日”。您可以解析此字符串并获取重要部分:
function displayDayMonth(date) {
const [_year, month, day] = date.split("-").map(s => parseInt(s, 10));
const months = ["Jan", "Feb", //... etc ];
return `${months[month - 1]} ${day}`;
}
const date = "2021-09-25";
displayDayMonth(date);
// => "Sep 25"
另一方面,如果时间真的很重要怎么办?如果太平洋时间的事件发生在 9 月 25 日,那么该事件的很大一部分发生在印度的 9 月 24 日。也许您没有捕捉到有关该事件的足够细节?