Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将ISO日期转换为“日期”;2017年9月18日上午10:45“;总体安排_Javascript_Jquery_Date - Fatal编程技术网

Javascript 将ISO日期转换为“日期”;2017年9月18日上午10:45“;总体安排

Javascript 将ISO日期转换为“日期”;2017年9月18日上午10:45“;总体安排,javascript,jquery,date,Javascript,Jquery,Date,我尝试了moment.js,将其解析为字符串等。我发现将其转换为所需的输出没有任何运气 我有这个密码 console.clear(); var date = []; $.ajax({ url: "https://api.myjson.com/bins/1dqpsd", dataType: "json", success: function (result) { //console.log(result); //Now a JSON object

我尝试了
moment.js
,将其解析为字符串等。我发现将其转换为所需的输出没有任何运气

我有这个密码

console.clear();

var date = [];
$.ajax({
    url: "https://api.myjson.com/bins/1dqpsd",
    dataType: "json",
    success: function (result) {
        //console.log(result); //Now a JSON object
        for (var i in result){
          //console.log(result[i]);
          date[i] =result[i].commit);
          console.log(date[i]);
        }
    }
});
这将返回如下格式

"2017-07-22T19:36:50.000+12:00"
"2017-07-22T14:46:40.000+12:00"
"2017-07-21T22:46:18.000+12:00"
"2017-07-20T19:32:10.000+12:00"
我想把它转换成类似的东西

July 22, 2017 6:36 PM
July 22, 2017 2:46 PM

您可以将
toLocaleString
与现有格式一起使用。但这假设
+12:00
是适合您的时区

例如:

var time = "2017-07-22T19:36:50.000+12:00"
var options = { year: 'numeric', month: 'long', day: 'numeric', hour: "2-digit", minute: "2-digit" };
var localstring = new Date(time).toLocaleString('en-US', options)
console.log(localstring)

// 'July 21, 2017, 11:36 PM'
我的时区是-08,这是正确的

如果您希望时间在不同的时区,可以将其包含在
选项中:

var options = { year: 'numeric', month: 'long', day: 'numeric', hour: "2-digit", minute: "2-digit", timeZone: "America/New_York" };
new Date(time).toLocaleString('en-US', options)
// 'July 22, 2017, 3:36 AM'

如果您使用的是moment.js,那么可以将字符串解析为日期,然后使用适当的格式标记对其进行格式化

请注意,默认情况下,矩.js解析ISO 8601字符串,因此您不需要提供解析格式,但最好始终提供格式以避免错误解析格式错误的字符串:

var s=“2017-07-20T19:32:10.000+12:00”;
console.log(矩格式('MMMM-DD,YYYY-hh:mm-a')

你能告诉我们你试图实现的瞬间.js代码和你得到的结果吗?可能ToLocalString返回的值的副本取决于实现,可能是操作要求的格式,也可能不是操作要求的格式。最小测试在不同的浏览器中显示不同的结果,例如Safari返回“9/18/2017,11:04:22 AM”,Firefox返回“2017年9月18日,上午11:06:05”。@RobG请在评论和否决投票前查看完整答案。很明显,您没有像我的示例那样将
传递给LocaleString
一个
options
对象。在我的测试中:Firefox:2017年7月21日晚上11:36,Safari:2017年7月21日晚上11:36,Chrome:2017年7月21日晚上11:36,Node:2017年7月21日晚上11:36
toLocaleString()
with
options
在现代浏览器上得到了很好的支持。同样的参数也适用于使用options参数,尽管程度较低。碰巧的是,常用的格式与OP想要的格式相似,但无法保证。顺便说一句,使用+11:00偏移的时区是“太平洋/瓜达尔卡纳尔”。;-)我认为ECMA402的作者错过了一个提供一个好的解析器和格式化程序的好机会,例如,目前的格式是基于语言的,这是不应该的。虽然它可以用于精确的格式化,但它相当冗长(基本上你必须一次获取一个位,然后格式化它们)。@RobG我不确定同一个参数是如何应用的。上面的答案为OP提供了他们想要的东西,没有第三方库。它可能有点冗长,但没有51KB那么冗长,它出现在“2017年7月22日下午6:36”cf“2017年7月21日下午11:36”。