javascript 将 ISO 8601 时间日期转换为简单的英语

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/12498619/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-26 16:20:38  来源:igfitidea点击:

Convert ISO 8601 time date into plain English

javascriptdatetime

提问by user887515

How can I manipulate a date time in the format below (I believe it is ISO 8601 format) with JavaScript?

如何使用 JavaScript 以下面的格式(我相信它是 ISO 8601 格式)操作日期时间?

2010-01-13T18:31:16Z

2010-01-13T18:31:16Z

I'd like to output as dd/mm/yyyy hh:mm:ss.

我想输出为 dd/mm/yyyy hh:mm:ss。

Thank you

谢谢

采纳答案by kennebec

If you really want plain English, why not convert the string to a Date and call date.toLocaleString(), or toUTCString() if you want GMT.

如果您真的想要简单的英语,为什么不将字符串转换为日期并调用 date.toLocaleString() 或 toUTCString() 如果您想要 GMT。

var time=new Date('2010-01-13T18:31:16Z').toLocaleString();

var time=new Date('2010-01-13T18:31:16Z').toLocaleString();

If you want to support IE8 and older browsers you'll need translate the string:

如果你想支持 IE8 和更旧的浏览器,你需要翻译字符串:

(function(){
    var D= new Date('2011-06-02T09:34:29+02:00');
    if(!D || +D!==1307000069000){
        Date.fromISO= function(s){
            var day, tz,
            rx=/^(\d{4}\-\d\d\-\d\d([tT][\d:\.]*)?)([zZ]|([+\-])(\d\d):(\d\d))?$/,
            p= rx.exec(s) || [];
            if(p[1]){
                day= p[1].split(/\D/);
                for(var i=0,L=day.length;i<L;i++){
                day[i]=parseInt(day[i], 10) || 0;
                };
                day[1]-= 1;
                day= new Date(Date.UTC.apply(Date, day));
                if(!day.getDate()) return NaN;
                if(p[5]){
                    tz= (parseInt(p[5], 10)*60);
                    if(p[6]) tz+= parseInt(p[6], 10);
                    if(p[4]== '+') tz*= -1;
                    if(tz) day.setUTCMinutes(day.getUTCMinutes()+ tz);
                }
                return day;
            }
            return NaN;
        }
        // shim implemented;
    }
    else{
        Date.fromISO= function(s){
            return new Date(s);
        }
        //native ISO Date implemented;
    }
})()

var time= Date.fromISO('2010-01-13T18:31:16Z').toLocaleString();

var time= Date.fromISO('2010-01-13T18:31:16Z').toLocaleString();

returned value: (String) Wednesday, January 13, 2010 1:31:16 PM

返回值:(字符串)2010 年 1 月 13 日星期三下午 1:31:16

回答by Eric Levine

Take a look at the Date object API in JavaScript: http://www.w3schools.com/jsref/jsref_obj_date.asp. This should get you started:

看看 JavaScript 中的 Date 对象 API:http: //www.w3schools.com/jsref/jsref_obj_date.asp。这应该让你开始:

var timeStr = "2010-01-13T18:31:16Z";
var date = new Date(timeStr);
var day = date.getDate();
var year = date.getFullYear();
var month = date.getMonth()+1;
var dateStr = month+"/"+day+"/"+year;

There are methods to get the time, which you can also append to dateStr.

有获取时间的方法,您也可以将其附加到 dateStr。

回答by Bergi

You can easily change the format with an regex, e.g.

您可以使用正则表达式轻松更改格式,例如

return datestring.replace(/(\d+)-(\d+)-(\d+)T(\d+):(\d+):(\d+)Z/, "// ::");

or, you parse the string to a Dateobject, and extract the single values (or many more, like the weekday etc):

或者,您将字符串解析为Dateobject,并提取单个值(或更多,如工作日等):

var date = new Date(datestring); // parses ISO 8601
return date.getDate()+"/"+(date.getMonth()+1)+"/"+date.getFullYear()+" "+…