Date 从用户转换日期/时间';网站上UTC的当地时间

Date 从用户转换日期/时间';网站上UTC的当地时间,date,localization,time,utc,Date,Localization,Time,Utc,我目前正在为一个网站添加一个类似于外出的系统,在这个系统中,用户可以标记他们外出的日期和时间,以便在他们外出时提供其他用户的信息作为备份 我遇到的问题是将用户的本地时间转换为UTC。我见过其他文章通过向用户提供UTC,并让客户端(js)将时间转换为本地时间和本地时间,来解决这个问题。但是,我可以访问一个适当的系统,我可以使用它根据用户的时区偏好转换日期服务器端 我的问题是:我应该使用服务器端转换,这将允许提供用户的家庭本地时间(例如,他们的美国时间,无论他们登录到哪里),还是应该使用客户端转换

我目前正在为一个网站添加一个类似于外出的系统,在这个系统中,用户可以标记他们外出的日期和时间,以便在他们外出时提供其他用户的信息作为备份

我遇到的问题是将用户的本地时间转换为UTC。我见过其他文章通过向用户提供UTC,并让客户端(js)将时间转换为本地时间和本地时间,来解决这个问题。但是,我可以访问一个适当的系统,我可以使用它根据用户的时区偏好转换日期服务器端

我的问题是:我应该使用服务器端转换,这将允许提供用户的家庭本地时间(例如,他们的美国时间,无论他们登录到哪里),还是应该使用客户端转换


有没有人有这方面的经验?每种方法的一些不太明显的优点/缺点是什么?

将所有内容存储在UTC中是一个非常好的主意,我建议您坚持使用它

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

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


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

问题归结为您是否认为用户将在其配置文件中设置正确的时间,以及您是否认为他们的客户端设置为其计算机设置的时区

如果home time设置是配置文件中的可选设置(大量用户无法正确设置),则应使用客户端时间

如果您希望许多用户从未设置为其首选时区的计算机访问系统(例如,如果他们从酒店计算机访问系统),那么您应该在服务器上转换时间

如果这两个条件都适用于你,那么你做了会被诅咒,不做会被诅咒

如果两者都不适用,则两种解决方案将提供相同、令人满意的结果


无论您选择什么,最好在显示时间时添加时间戳,以消除任何混淆。

如果您需要一些代码示例,请列出技术。除非它是PHP,否则我可能会提供它。我想指出,它也是一个允许用户指定他/她的时区的选项,但默认为当前浏览器的时区。这样,如果用户不提供时区,仍然可以看到正确的时间。然而,它仍然保留了可用的灵活性。但是,对于初学者,我相信我将只使用当前浏览器的时间偏移,正如您所说的那样。:)谢谢