在JavaScript中转换日期/时间格式
Converting between date/time formats in JavaScript
我正在使用一个以OData v4格式返回日期/时间的web服务。该格式如下所示:yyyy-MM-ddTHH:mm:ss.fffZ
。这意味着当前时间将返回为:"2016-05-11T03:08:00Z"。
我在一些客户端JavaScript中收到了这个日期。我正在尝试使用Moment.js库格式化日期。根据我的理解,该库查找ISO 8601格式的字符串。
我的问题是,如何将我得到的OData v4字符串转换为ISO 8601格式的字符串?或者,如何将OData v4字符串加载到moment
对象中?我最大的问题似乎是时区问题。例如:如果我有
2016-06-01T00:00:00Z
然后使用
moment('2016-06-01T00:00:00Z').format('MM/DD/YYYY')
我得到
05/31/2016
然而,我被期待06-01-2016
谢谢!
如果您所要做的只是将此UTC日期解释为当地时间,则无需引入Moment时区。只需忽略z
令牌。
moment('2016-06-01T00:00:00Z', 'YYYY-MM-DDTHH:mm:ss').format()
"2016-06-01T00:00:00-05:00" //interpreted as -5 because my browser is central
请注意,Intl.DateTimeFormat()
对浏览器的支持非常有限:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/resolvedOptions
如果您出于某种目的确实需要浏览器中的时区信息(请记住,如果您只是指浏览器的本地时间,则不需要此信息),则可以使用moment.tz.guess()
。如果有,这将使用国际API,如果没有,则返回到试探法来猜测时区。http://momentjs.com/timezone/docs/#/using-时区/猜测用户时区/
为了更好地衡量,如果您希望将该日期解释为UTC并显示为UTC,您可以使用UTC函数:
moment.utc('2016-06-01T00:00:00Z').format()
"2016-06-01T00:00:00Z" //z for UTC, but displayed with expected date and time
您必须通过添加时区偏移量手动处理,或者如果您可以添加另一个依赖项moment timezones js
,那么您可以做一些事情。
var tz = Intl.DateTimeFormat().resolvedOptions().timeZone;
moment('2016-06-01T00:00:00Z').tz(tz).format('MM/DD/YYYY')
如果你知道你的时区,那么只需传递你的时区名称。
moment('2016-06-01T00:00:00Z').tz('America/New_York').format('MM/DD/YYYY')
- Json数据包含日期和时间格式
- 更改angularjs中的日期-时间格式
- 转换日期时间格式
- 在JavaScript中转换日期/时间格式
- 时间格式不适用于dateTimePicker
- 将时间格式更改为24小时格式
- 将某个时间格式转换为日期对象
- 自定义angularjs过滤器日期时间格式额外字符
- dygraph x轴中的时间格式
- 如何使用javascript在html中查找日期时间格式
- 日期时间格式增加了一个小时
- 如何将24小时的日期时间格式转换为12小时的格式
- angularjs中的自定义时间格式
- 时间戳日期&时间格式-应用程序脚本-设置日期和时间格式
- 如何使用moment.js将秒转换为时间格式(YYYY:MM:DD HH:MM:ss)
- 如何将 JSON.NET 日期时间格式转换为javascript日期和时间
- 从服务器获取并传递给浏览器以在 Javascript 中格式化的日期时间格式
- getHours() 时间格式为 2016-04-29T19:00:00
- 使用jQuery重写日期/时间格式
- 如何转换SalesForce Api提供的UTC日期格式,并使用Google Apps脚本将其转换为本地日期和时间格式