在网站上将用户当地时间的日期/时间转换为UTC

cwh*_*ris 6 time localization date utc

我目前正在将一个不在办公室的系统添加到一个网站,用户可以在其中标记他们的办公室日期和时间,以便他们可以提供其他用户的信息,以便在他们外出时用作备份.

我遇到的问题是将用户的本地时间转换为UTC.我已经看到通过向用户提供UTC以及让客户端(js)将时间转换为本地时间来解决此问题的其他帖子.但是,我可以访问一个专有系统,我可以根据用户的时区偏好来转换日期服务器端.

我的问题是:我应该使用服务器端转换,这将允许用户的家庭要提供本地时间(比方说,他们在美国的时候,无论在哪里,他们登录),或者我应该使用客户端转换?

有人对这个有经验么?每种方法有哪些不太明显的优点/缺点?

Paw*_*yda 11

以UTC格式存储所有内容是一个非常好的主意,我建议您坚持下去.

您可以使用的方法很少.我假设您将拥有用户的个人资料.您可以决定让用户选择他们喜欢的时区,并使用此信息显示所有内容.除了适当地处理所有用户输入(在服务器端转换,假设时区是首选的).

处理它的另一种方法是实际上通过用户的时区偏移Date.getTimeZoneOffset()并以某种方式将其发送到您的服务器(即通过隐藏的表单字段或Ajax).当你知道这一点时,在用户的时间显示所有内容将是小菜一碟.在这种情况下,您可能希望在客户端上转换日期/时间并将其作为UTC发送出去(或使用带有时区偏移的隐藏表单字段).

在这两种情况下,您都在服务器端处理数据库日期转换 根据我的经验,这是最好的方法.我想指出,除了转换时区之外,您可能应该考虑以正确的格式显示日期/时间(即取决于AcceptLanguage标头值).