将UTC时刻转换为本地日期时间

时间:2016-07-23 14:43:56

标签: javascript momentjs datetime-format

我在客户端放置了来自.net的UTC .NET / JSON日期。当我运行以下命令时:

moment(value.Planet.when).utc()

来自webservice的返回日期:

"/Date(1469271646000)/"

我在_d参数中得到一个日期,显示当前准确的UTC日期,右侧是GMT + 0300。

我想将此时间转换为用户计算机上的本地时间以及我所做的事情,我总是将时间缩短3小时。

我这样做:

moment(value.Planet.when).local().format('YYYY-MM-DD HH:mm:ss')

我获得与UTC相同的日期时间。我不明白如何让momentjs显示相对于当地时间的UTC时间。我检查了momentjs对象确实是UTC。

我认为如果我通过moment.utc()函数传递我从webservice(最初来自数据库)获得的UTC日期,我可以运行local()函数,我会得到准确的小时相对于我的地区,但它没有用。

2 个答案:

答案 0 :(得分:1)

您可以使用moment(date).format('YYYY-MM-DDTHH:mm:ss');

例如:-如果您输入日期“ / Date(1469271646000)/”

ip-> moment(1469271646000).format('YYYY-MM-DDTHH:mm:ss');

op->“ 2016-07-23T16:30:46”

答案 1 :(得分:0)

请勿使用_d属性。它仅供内部使用。请参阅this answerthe user guideMaggie's blog post on the subject

至于你如何转换为本地时间的问题,你实际上根本不需要转换。您已经在本地模式下解析输入值,因此您可以直接使用它:

var m = moment("/Date(1469271646000)/");  // gives you a moment object in local mode.
var s = m.format();   // lets you format it as a string.  Pass parameters if you like.
var d = m.toDate();   // gives you a Date object if you really need one

尽量避免使用Date个对象,除非您正在使用的其他控件或库需要它们。大多数操作都可以在moment个对象上严格执行。