如何将YYYY-MM-DD hh mm ss转换为MonthName,date,year |小时:JavaScript或jQuery中的Minuts(am / pm)

时间:2013-03-13 09:26:21

标签: javascript jquery

我有日期字符串(2013-03-10 19:43:55),并希望使用JavaScript或jQuery以此格式(Mar 10, 2013 | 7:43 pm)转换它。我怎么能这样做?

3 个答案:

答案 0 :(得分:2)

为跨浏览器兼容的解决方案扩展@ arun-p-johny解决方案

function converter(s) {

  var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
  s =  s.replace(/-/g, '/');
  var d = new Date(s);

  var hour = d.getHours();

  return d.getFullYear() + ' ' + months[d.getMonth()] + ' ' + d.getDate() + ' | ' + (hour % 12) + ':' + d.getMinutes() + ' ' + (hour > 11 ? 'pm' : 'am');
}

console.log(converter('2013-03-10 19:43:55'));

参考:http://dygraphs.com/date-formats.html

答案 1 :(得分:1)

尝试类似

的内容
function converter(string) {
    var d = new Date(string);
    var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'sep', 'Oct', 'Nov', 'Dec'];

    var hour = d.getHours();

    return d.getFullYear() + ' ' + months[d.getMonth()] + ' ' + d.getDate() + ' | ' + (hour % 12) + ' ' + d.getMinutes() + ':' + (hour > 11 ? 'pm' : 'am');
}

alert(converter('2013-03-10 19:43:55'))

演示:Fiddle

更新:

RegEx based solution for cross browser compatibility
function converter(string) {
    var d = string.split(/[-:\s]/);
    var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'sep', 'Oct', 'Nov', 'Dec'];

    var hour = parseInt(d[3], 10);

    return d[0] + ' ' + months[parseInt(d[1], 10) - 1] + ' ' + d[2] + ' | ' + (hour % 12) + ' ' + d[4] + ':' + (hour > 11 ? 'pm' : 'am');
}

alert(converter('2013-03-10 19:43:55'))

演示:Fiddle

答案 2 :(得分:0)

Kashif的回答似乎是+1,但是,有一个小故障。

如果要显示的分钟数小于10,那么根据他的功能而不是显示“6:08 PM”它显示“6:8 PM”。这可以通过添加

来解决
var minutes = d.getMinutes();
if(minutes<10){
    minutes = "0"+minutes;
}

完整的工作功能如下,

function dateConverter(s) {

 var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
 s =  s.replace(/-/g, '/');
 var d = new Date(s);
 var hour = d.getHours();
 var minutes = d.getMinutes();

  //to display the minutes less than 10 with 0 as the suffix
  if(minutes<10){
    minutes = "0"+minutes;
  }
  return months[d.getMonth()] + ' ' + d.getDate() + ' , ' + d.getFullYear() + ' | ' + (hour % 12) + ':' + minutes + ' ' + (hour > 11 ? 'pm' : 'am');
}