如何在javascript中将日期时间从用户时区转换为EST [重复]

Posted

技术标签:

【中文标题】如何在javascript中将日期时间从用户时区转换为EST [重复]【英文标题】:How to convert datetime from the users timezone to EST in javascript [duplicate] 【发布时间】:2012-02-22 15:28:08 【问题描述】:

我有一个具有动态 javascript 日历的 Web 应用程序,它允许用户为给定的数据和时间设置事件。我需要向用户推送通知,因此我需要将他们输入的日期时间和时区转换为东部标准时间,以便我的通知在正确的时间发出。

我想在 javascript 中执行此操作,以便当数据时间值到达 php 时,它的格式正确,然后才添加到数据库中。

总而言之,我需要将通过捕获用户数据时间作为完整 UTC 日期获得的 javascript 数据时间和时区转换为我的服务器时区,即 EST - 纽约。

在此问题上的任何帮助或指导,将不胜感激。 谢谢:)

【问题讨论】:

【参考方案1】:

请检查此脚本

function convertToServerTimeZone()

    //EST
    offset = -5.0

    clientDate = new Date();
    utc = clientDate.getTime() + (clientDate.getTimezoneOffset() * 60000);

    serverDate = new Date(utc + (3600000*offset));

    alert (serverDate.toLocaleString());



【讨论】:

这行得通!如何将时间转换回用户时区,以便在页面上显示日期时间? 都在偏移量中。您可以使用用户时区偏移并使用日期对象上可用的函数以用户区域设置特定格式呈现。 如果您打算使用 Javascript,这会简单得多。由于它在客户端浏览器上运行,您所需要的只是如下代码。 'function displayClientTimeZone() clientDate = new Date();警报 (clientDate.toLocaleString());返回 clientDate.toLocaleString(); ' 请注意,虽然此解决方案转换为 EST(即北美 EST)。它不考虑夏令时。因此,如果您正在寻找 EST,这很好。如果您正在寻找由东部标准时间和东部夏令时间组成的“美国东部时间”,这种方法将不起作用。 You will need a library to do that. 非常有用。谢谢【参考方案2】:

我会在您渲染页面时(通过 PHP)将 EST 时区偏移量绘制到页面中,然后在客户端获取 UTC 时间并将其偏移量为您绘制的量。否则,如果您的服务器曾经移动时区,您的页面会突然报告错误的时间。

不过我最近才这样做,发现处理这个问题的最简单方法是实际使用 mysql(我假设那是您的数据库),并在您输入日期时让 IT 为您转换时区邮票。除非你担心这太繁重,并且你试图绝对减少你的数据库正在做的工作,否则我会走这条路,而不是试图在 JS 中进行手动 TZ 转换。

【讨论】:

以上是关于如何在javascript中将日期时间从用户时区转换为EST [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 android 中将日期从 GMT 时区解析为 IST 时区和反之亦然

你如何保存从浏览器到服务器的 JavaScript 日期的时区,然后返回?

在JavaScript中将日期转换为另一个时区

如何忽略javascript时区将日期时间发送到服务器

如何在sql中将带时区的varchar转换为日期时间

在 PHP/MySQL 中将日期时间存储为 UTC