我有一个从MySQL返回的时间格式 YYYY-MM-DDTHH:MM:ss.sssZ
所以看起来像这样
2017-02-17T22:32:25.000Z
当我对它运行split()时,它什么都不做
var test = data[i].createdAt;
test.split("T");
它没有任何作用
所以我希望数据看起来像这样
2017-02-17T22:32:25.000Z
到
02-17-2017 10:32 p.m。
任何帮助?
答案 0 :(得分:2)
您可能希望使用new Date(dateString)
和dateObj.toLocaleTimeString([locales[, options]])
:
var date = new Date('2017-02-17T22:32:25.000Z');
var formatOptions = {
day: '2-digit',
month: '2-digit',
year: 'numeric',
hour: '2-digit',
minute: '2-digit',
hour12: true
};
var dateString = date.toLocaleDateString('en-US', formatOptions);
// => "02/17/2017, 11:32 PM"
dateString = dateString.replace(',', '')
.replace('PM', 'p.m.')
.replace('AM', 'a.m.');
// => "02/17/2017 11:32 p.m."
console.log(dateString);

答案 1 :(得分:1)
JavaScript Date
对象将接受与您类似的ISO日期,此时您可以手动格式化字符串,如下所示:
function formatDate(d) {
var myDate = new Date(d);
var hrs = ((myDate.getHours() > 12) ? myDate.getHours()-12 : myDate.getHours());
var amPM = ((myDate.getHours() >= 12) ? "PM" : "AM");
if (hrs==0) hrs = 12;
var formattedDate = (myDate.getMonth() + 1) + "-" + myDate.getDate() + "-" + myDate.getFullYear() + " " + hrs + ":" + myDate.getMinutes() + " " + amPM;
return formattedDate;
}
var myFormattedDate = formatDate("2017-02-17T22:32:25.000Z");
alert(myFormattedDate);

答案 2 :(得分:1)
如果您不反对使用Javascript库,我强烈推荐Moment:http://momentjs.com。对于您的用例,代码为:
var time = moment(data[i].createdAt).format('MMMM Do YYYY, h:mm a');
它处理多种时间格式(输入和输出)以及边缘情况。
答案 3 :(得分:0)
您可以在有或没有选项的情况下使用toLocaleDateString
和toLocaleTimeString
。与toLocaleString
相比,这允许您不包含逗号。
const str = '2017-02-17T22:32:25.000Z';
const d = new Date(str);
console.log(`${d.toLocaleDateString()} ${d.toLocaleTimeString()}`);
console.log(`${d.toLocaleDateString().replace(/\//g,'-')} ${d.toLocaleTimeString('en-US', {hour: '2-digit', minute:'2-digit'})}`);

答案 4 :(得分:0)
您可以使用toLocaleString
为其提供可选参数。例如:
var dt = '2017-02-17T22:32:25.000Z';
console.log(new Date(dt).toLocaleString('en-CA', { hour12:true }));