我正在尝试将当前日期转换为时间戳并将其发送到API以保存它。当我尝试从API重新检索时间戳并将其转换为日期时,它正在进行共同恢复。
问题是当我向API发送当前时间戳时,如果新加坡的某个人从API获取相同的时间戳并尝试转换为日期,则会显示(我已发送给API的日期和时间)+ 2.30小时。
我在javascript中使用新日期(时间戳)将时间戳转换为日期。
同样,它与不同的时区不同。
我该如何解决这个问题?
答案 0 :(得分:0)
您可以使用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]]]]])
答案 1 :(得分:0)
Unix中的Javascript中的时间戳是自1970年1月1日以来没有时区偏移的毫秒数。 Date.now()
会返回这样的时间戳。
如果您将“您的日期和时间”作为时间戳发送到API,请将其检索并在PC上的浏览器中转换回“日期和时间”,转换回来将从UTC转换为当地时间,如下所示:您PC的本地区域设置。在你以西2.5小时的某个地方,2.5小时后的当地时间,将相同的UTC时间戳转换为比你的2.5小时的本地时间值。
如何解决问题取决于需要实现的目标。全球用户是否应在您的时区, UTC ,他们的时区,网站上指定的时区中查看时间戳,或者相对于特定位置,例如飞机起飞的出发和到达机场?在查看名称中带有“UTC”的Date对象方法之前,需要首先确定这一点: - )。
<小时/> 回应使用OP时区的评论:
如果您的位置不使用夏令时,您可以在页面脚本中包含固定的时区偏移量,并将其与用户的时区结合使用,以生成与您当地创建时间相匹配的日期和时间字符串。如果将来在您的地区引入夏令时则会出现问题。
对于夏令时,您可以将您的东风时区偏移量(以毫秒为单位)添加到Date.now()时间戳,将结果存储在API中,检索时间戳并使用.getUTCxxx方法转换为日期和时间字符串继承自Date.prototype
。这样的转换应该与创建时间戳时的本地时间相匹配。该方法可能有有效的批评,但至少应符合要求!
理想情况下,UTC时间戳将保持不变,并且还会存储创建者的本地时区偏移量。