Javascript格式日期/时间

Javascript format date / time

本问题已经有最佳答案,请猛点这里访问。

我需要将日期/时间从2014-08-20 15:30:00更改为2014年8月20日下午3:30

可以使用javascript的Date对象完成吗?


是的,您可以使用本机javascript Date()对象及其方法。

例如,您可以创建一个函数,如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function formatDate(date) {
  var hours = date.getHours();
  var minutes = date.getMinutes();
  var ampm = hours >= 12 ? 'pm' : 'am';
  hours = hours % 12;
  hours = hours ? hours : 12; // the hour '0' should be '12'
  minutes = minutes < 10 ? '0'+minutes : minutes;
  var strTime = hours + ':' + minutes + ' ' + ampm;
  return date.getMonth()+1 +"/" + date.getDate() +"/" + date.getFullYear() +" " + strTime;
}

var d = new Date();
var e = formatDate(d);

alert(e);

并显示上午/下午和正确的时间。

请记住使用getFullYear()方法而不是getYear(),因为它已被弃用。

演示http://jsfiddle.net/a_incarnati/kqo10jLb/4/


请不要重新发明轮子。有许多开源和&amp;已经存在的COTS解决方案可以解决这个问题。

请查看以下JavaScript库:

  • Moment.js:[来源] | [精缩]

  • Datejs:[来源] | [Alpha1.zip(1.6MB)]

演示

我用下面的Moment.js写了一个单行。您可以在这里查看演示:JSFiddle。

1
moment('2014-08-20 15:30:00').format('MM/DD/YYYY h:mm a'); // 08/20/2014 3:30 pm


对于日期部分:(月份为0索引,而天数为1索引)

1
2
var date = new Date('2014-8-20');
console.log((date.getMonth()+1) + '/' + date.getDate() + '/' +  date.getFullYear());

当你想要创建一个函数来测试不同的情况和转换。


我不认为可以使用本机Date对象上的内置方法可靠地完成。 toLocaleString方法接近,但如果我记得正确,它将无法在IE <10中正常工作。如果您能够使用库来执行此任务,MomentJS是一个非常棒的库;它使日期和时间的工作变得简单。否则,我认为你必须编写一个基本函数来为你提供你所追求的格式。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function formatDate(date) {
    var year = date.getFullYear(),
        month = date.getMonth() + 1, // months are zero indexed
        day = date.getDate(),
        hour = date.getHours(),
        minute = date.getMinutes(),
        second = date.getSeconds(),
        hourFormatted = hour % 12 || 12, // hour returned in 24 hour format
        minuteFormatted = minute < 10 ?"0" + minute : minute,
        morning = hour < 12 ?"am" :"pm";

    return month +"/" + day +"/" + year +"" + hourFormatted +":" +
            minuteFormatted + morning;
}


你可以这样做:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function formatAMPM(date) { // This is to display 12 hour format like you asked
  var hours = date.getHours();
  var minutes = date.getMinutes();
  var ampm = hours >= 12 ? 'pm' : 'am';
  hours = hours % 12;
  hours = hours ? hours : 12; // the hour '0' should be '12'
  minutes = minutes < 10 ? '0'+minutes : minutes;
  var strTime = hours + ':' + minutes + ' ' + ampm;
  return strTime;
}

var myDate = new Date();
var displayDate = myDate.getMonth()+ '/' +myDate.getDate()+ '/' +myDate.getFullYear()+ ' ' +formatAMPM(myDate);
console.log(displayDate);

小提琴