将ISO日期转换为“2017年9月18日上午10:45”格式

时间:2017-09-17 23:24:43

标签: 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
        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

2 个答案:

答案 0 :(得分:0)

您可以使用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;

如果您想要在不同时区的时间,可以在options

中加入
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'

答案 1 :(得分:0)

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

请注意,默认情况下,moment.js会解析ISO 8601字符串,因此您不需要提供解析格式,但是总是提供格式以避免错误地解析格式错误的字符串,这是一种很好的做法:



var s = "2017-07-20T19:32:10.000+12:00";

console.log(moment(s).format('MMMM DD, YYYY hh:mm a'));

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
&#13;
&#13;
&#13;

用于解析和格式化的标记为in the documentation