在Javascript中帮助解析ISO 8601日期 [英] Help parsing ISO 8601 date in Javascript

查看:76
本文介绍了在Javascript中帮助解析ISO 8601日期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

需要有关将ISO 8601日期转换为javascript的帮助/提示。

Need help/tips on converting an ISO 8601 date with the following structure into javascript.

CCYY-MM-DDThh:mm:ssTZD

我喜欢这样的日期:

January 28, 2011 - 7:30PM EST

我想保持这个解决方案尽可能干净和最小。如果您需要其他任何事情请让我知道!谢谢!

I'd like to keep this solution as clean and minimal as possible. If you need anything else please let me know! Thanks!

推荐答案

datejs 可以解析以下内容,你可能想尝试一下。

datejs could parse following, you might want to try out.

Date.parse('1997-07-16T19:20:15')           // ISO 8601 Formats
Date.parse('1997-07-16T19:20:30+01:00')     // ISO 8601 with Timezone offset

编辑:正则表达式版本

x = "2011-01-28T19:30:00EST"

MM = ["January", "February","March","April","May","June","July","August","September","October","November", "December"]

xx = x.replace(
    /(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):\d{2}(\w{3})/,
    function($0,$1,$2,$3,$4,$5,$6){
        return MM[$2-1]+" "+$3+", "+$1+" - "+$4%12+":"+$5+(+$4>12?"PM":"AM")+" "+$6
    }
)

结果

January 28, 2011 - 7:30PM EST

编辑2:我将时区更改为EST,现在我已经关注

I changed my timezone to EST and now I got following

x = "2011-01-28T19:30:00-05:00"

MM = {Jan:"January", Feb:"February", Mar:"March", Apr:"April", May:"May", Jun:"June", Jul:"July", Aug:"August", Sep:"September", Oct:"October", Nov:"November", Dec:"December"}

xx = String(new Date(x)).replace(
    /\w{3} (\w{3}) (\d{2}) (\d{4}) (\d{2}):(\d{2}):[^(]+\(([A-Z]{3})\)/,
    function($0,$1,$2,$3,$4,$5,$6){
        return MM[$1]+" "+$2+", "+$3+" - "+$4%12+":"+$5+(+$4>12?"PM":"AM")+" "+$6 
    }
)

返回

January 28, 2011 - 7:30PM EST

p>

Basically

String(new Date(x))

返回

Fri Jan 28 2011 19:30:00 GMT-0500 (EST)

正则表达式零件只需将上述字符串转换为所需的格式。

regex parts just converting above string to your required format.

January 28, 2011 - 7:30PM EST

这篇关于在Javascript中帮助解析ISO 8601日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆