在 Javascript 中解析 ISO 8601 日期 [英] Parsing ISO 8601 date in Javascript

查看:29
本文介绍了在 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

我想像这样格式化日期:

I'd like to format the date like so:

January 28, 2011 - 7:30PM EST

我希望这个解决方案尽可能简洁和简洁.

I'd like to keep this solution as clean and minimal as possible.

推荐答案

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

Edit2:我将时区更改为 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

基本上

String(new Date(x))

返回

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

regex 部分只是将上面的字符串转换为您需要的格式.

regex parts just converting above string to your required format.

January 28, 2011 - 7:30PM EST

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

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