我有一个Web应用程序,我的用户在纽约,但管理员遍布全球。用例很简单。管理员单击日期并添加一些注释。用户登录应用程序时,单击相同日期并查看备注
问题是时区。当印度管理员在2019年1月1日添加数据时,他的数据将被添加到2018年12月31日,因为服务器正在将传入的IST转换为EST。这打破了应用程序。
我无法处理个别时区。所以我想确保前端总是在EST中通过日期而不管当地时区
private normalizeDate(d)
{
let noTime = moment(d).format("L");
let m = moment(noTime).tz("America/New_York");
alert("no time :"+noTime);
alert("normalized :"+m.format("L"));
}
我尝试了这个功能,我在当地时区(d)获取日期并删除所有信息。转换为字符串,然后将其解析回我的EST时区。
很明显每当我打电话。 moment()。tz()它再次转换时区。
不知道什么是最好的解决方案?
最终我用它来解决问题
public static NormalizeDate(d, timezone = "America/New_York")
{
var a = moment(d);
var b = a.clone();
return b.tz(timezone, true).startOf("day");
}