的JavaScript存储为UTC对服务器
日期显示正确的日期我有存储在我的UTC格式数据库日期,并呼吁的JavaScript存储为UTC对服务器
element.createdDate = new Date(element.createdDate.toString());
结果显示错误的日期。
调用
element.createdDate = new Date(element.createdDate.toUTCString());
回报什么。我如何从UTC显示正确的时间?
尝试用日期格式/此刻他们会帮助你。它们很容易使用
请仅使用* Post answer *按钮才能得到实际答案。一旦你有[足够的代表](https://stackoverflow.com/help/privileges/comment),你就可以添加评论的问题。 –
看起来你的json响应包含一个字符串值,它是以UTC格式的ISO8601格式,然后你要从它们创建Date
对象。
你的这部分代码是罚款:
if (element.createdDate) element.createdDate = new Date(element.createdDate.toString());
- 您解析字符串,并将得到
Date
对象是正确的。 - 但是,这里不需要使用
.toString()
,因为该值已经是一个字符串。这是多余的。
你的这部分代码的问题是:
console.log("javascript date: " + new Date(element.depositDate.getUTCDate().toString()));
- 的
getUTCDate
函数返回月份的只是日期。不要使用它。 - 无论您如何创建
Date
对象,最终都会创建一个Date
对象,并且您依赖于隐式字符串转换来输出它。这在不同的浏览器中会有不同的行为。
考虑console.log(new Date())
:
在Chrome中,这个记录类似
Fri Mar 17 2017 12:14:29 GMT-0700 (Pacific Daylight Time)
我的电脑上。这就好像我调用console.log(new Date().toString());
它采用RFC 2822格式(但不完全),并且在本地时间表示。在Firefox中,这个日志类似
2017-03-17T19:14:46.535Z
。这就好像我叫console.log(new Date().toISOString());
它是ISO8601格式,用UTC表示。
问题是,不要依赖隐式的未定义行为。如果您必须使用Date
对象,则应该使用console.log(element.createdDate.toISOString())
来查看UTC时间的ISO8601表示形式。
如果你打算用日期和时间做很多事情,你可能更喜欢使用一个库,例如Moment.js,它可以使这样的任务更清晰。
如果它是从数据库返回的字符串值,那么调用'getUTCDate()'应该失败,不会返回月份的日期... –
这是真的。此外,它不会使图片中显示的输出,所以我认为OP必须根据他在[早先的屏幕截图]中显示的代码(https://i.stack.imgur.com/ vgUjT.png),然后在编辑中将其删除。 –
我有存储在我的UTC格式数据库日期,并呼吁
element.createdDate = new Date(element.createdDate.toString());
结果显示错误的日期。
2016-10-11T00:00:00Z
和Mon Oct 10 2016 20:00:00 GMT-04:00 (EDT)
在时间上是完全相同的。唯一的区别是,一个以ISO 8601扩展格式显示,时区偏移量为00:00,另一个以RFC 2822(like)格式显示,时区偏移量为-04:00(并假设EDT区域为局部区域)。
调用
element.createdDate = new Date(element.createdDate.toUTCString());
回报什么。
这是不寻常的。通常它会返回一个字符串或一个错误,但没有一个工作示例或任何代码来提供上下文,所以不可能说出原因。
如何从UTC显示正确的时间?
您尚未指定“正确”是什么。您在同一时刻显示日期和时间,只是以不同的格式和时区显示。
您在这里提供的信息不足以帮助我们。你说你在你的数据库中有UTC的数据,但是你显示的是一个JS'Date'对象。你是怎么到达那里的?什么数据发送到您的JS代码?你如何解析它以得到一个'Date'对象?另外,你的输出显然也是一个Date对象。这是你的预期吗?如果不是,你期望输出什么? –
此外,请确保您了解“Date”对象的工作原理 - 它在内部跟踪UTC。其中一些函数保留在UTC(如'toUTCString'或'getUTCHours')中,一些函数转换为本地时间'(如'toString'或'getHours')。如果你只是'console.log'这个对象而不明确地调用一个发出字符串的函数,那么这个实现是不确定的,并且在不同的浏览器中有所不同(有些会给出本地时间,有些给出UTC时间)。 –
日期是从角度/内核中建立的日期。元素只是forEach循环的每次迭代,而createdDate是存储在mongo中的UTC日期。生病添加了全功能的图片 – mrusername