当前位置: 首页 > 面试题库 >

转换不带时区的JSON日期

谭兴学
2023-03-14
问题内容

我有一个返回例如DateTime对象的Web服务:DepartureDate。我使用ajax来获取此代码,并在我看来使用此功能将JSON日期字符串转换为javascript日期对象:

function convertToDate(jsonDate) {
    return eval("new " + jsonDate.substring(1, jsonDate.length - 1));
}

问题是要new Date()考虑到客户端计算机上的本地时间,因此不同国家/地区的客户端会获得不同的日期。我想获取从Web服务返回的确切日期。有没有简单的方法可以做到这一点?


问题答案:

问题是new Date()考虑了客户端计算机上的本地时间

不。使用时间戳构造函数创建新的日期需要UTC时间戳。

例如,在我的计算机上使用UTC + 1:

new Date(0)   // Thu Jan 01 1970 01:00:00 GMT+0100 (CET)

好的,默认toString 显示 此日期为01:00:00,这 看起来有 误,但这实际上是正确的时间。UTC +
1中的01:00:00在UTC中是00:00:00,这是timestamp描述的时刻0

如果要显示以UTC为单位的时间戳创建的日期,请使用date.toUTCString()或使用getUTCFullYear()getUTCMonth()等获取日期格式的各个部分并对其进行格式化。

不过请不要eval

new Date(parseInt(jsonDate.slice(6, -1), 10))


 类似资料:
  • 我有一个带时区的日期(如2014年3月21日08:00:00)(“如美国/丹佛”),我想将该日期转换为格林尼治标准时间;我怎么能这样做? 我还想知道Oracle是否接受DST?它会自动处理吗?是否以相同的方式支持所有时区? 注:“来自时区”在每种情况下都会改变;所以,并不总是美国/丹佛

  • 我以UTC long格式存储日期,并以用户时区显示。但当我试图只存储几天而没有时间时,它会误导到不同的日期。 例如:2016年5月05/06/2016 (06日的调度事件)。此日期对于所有没有时区的地区都是唯一的。如果来自GMT 5:30时区的用户试图在2016年6月5日添加事件,则ISO-8601格式为2016-05-05T16:00:00.000Z,毫秒1462464000000。 然后来自G

  • 问题内容: 我正在尝试使用Java日期和日历来实现从一个时区到另一个时区的简单转换。我正在尝试运行以下代码 但这仍然返回相同的日期,而不是+1小时…整个问题似乎微不足道,但我找不到任何简单的答案。在此先感谢您的帮助。 问题答案: 当您使用来打印日期时, 返回的是,并且始终以本地时区打印日期。 相反,您可能要使用:

  • 我正在尝试将日期插入我的PostgreSQL数据库。以下是我在java应用程序中解析日期的方式: 在我的PostgreSQL数据库中。我将其作为带有时区的。处理和插入它的理想方式是什么? 数据库期望的示例。

  • 返回我女巫是错误的。 但接下来的查询如下: 我看对日期

  • 我需要将查询中的日期值转换为带有时区的时间戳,但目前我得到的时区区域(“欧洲/巴黎”)是EF使用的无效区域。 例如,在执行此操作时: