【问题标题】:will conversion of timestamp to date in different timezones returns different date and time?将时间戳转换为不同时区的日期会返回不同的日期和时间吗?
【发布时间】:2016-06-17 04:43:42
【问题描述】:

我正在尝试将我的当前日期转换为时间戳并将其发送到 API 以保存它。当我尝试从 API 检索时间戳并将其转换为日期时,它正在 coorectly 检索。

问题是当我将当前时间戳发送到 API 时,如果新加坡人从 API 获取相同的时间戳并尝试转换为日期,它显示(我发送到 API 的日期和时间)+2.30hr。

我在 javascript 中使用 new Date(timestamp) 将时间戳转换为日期。

同样,不同时区也不同。

我该如何解决这个问题?

【问题讨论】:

标签: javascript angularjs datetime timestamp


【解决方案1】:

您可以使用 UTC 时间在各个位置之间进行标准化并将其发送到您的 api 中,当有人想在新加坡工作时接收 UTC 日期时间,然后将其转换为他的本地时区。

var utcDate = new Date(Date.UTC(96, 11, 1, 0, 0, 0));

Date.UTC 的构造函数

Date.UTC(year, month[, day[, hour[, minute[, second[, millisecond]]]]])

【讨论】:

    【解决方案2】:

    Javascript 中的类 Unix 时间戳是自 1970 年 1 月 1 日以来的毫秒数,没有时区偏移。 Date.now() 返回这样一个时间戳。

    如果您将“您的日期和时间”作为时间戳发送到 API,将其检索并在您 PC 上的浏览​​器中转换回“日期和时间”,则转换回的转换将从 UTC 转换为由 UTC 定义的本地时间PC 的本地区域设置。在您以西 2.5 小时,本地时间晚 2.5 小时的某个人会将相同的 UTC 时间戳转换为比您晚 2.5 小时的本地时间值。

    如何解决问题取决于需要实现的目标。如果全球用户看到您的时区UTC他们的时区网站上指定的时区的时间戳,或者相对于给定位置,例如飞机航班的出发和到达机场?这需要首先确定,然后再查看名称中带有“UTC”的 Date 对象方法:-)。


    针对使用 OP 时区的评论:

    如果您的位置不使用夏令时,您可以在页面脚本中包含您的固定时区偏移量,并将其与用户的时区结合使用,以生成与您的本地创建时间相匹配的日期和时间字符串。如果将来您所在地区引入夏令时,则会出现问题。

    对于夏令时,您可以将东部时区偏移(以毫秒为单位)添加到 Date.now() 时间戳中,将结果存储在 API 中,检索时间戳并使用 .getUTCxxx 方法转换为日期和时间字符串继承自Date.prototype。此类转换应与创建时间戳时的本地时间相匹配。该方法可能有合理的批评,但至少应该满足要求!

    理想情况下,UTC 时间戳将保持不变,同时存储创建者的本地时区偏移量。

    【讨论】:

    • 我想在所有其他位置(不同时区)转换后查看我的时区日期和时间
    • 您还应该将您的时区存储在 API 中。当您获取数据时,请使用此时区。
    猜你喜欢
    • 2020-03-17
    • 1970-01-01
    • 1970-01-01
    • 2015-11-27
    • 1970-01-01
    • 2021-09-17
    • 2012-06-28
    • 1970-01-01
    • 2022-01-14
    相关资源
    最近更新 更多