Javascript格式日期/时间

use*_*560 69 javascript datetime date

我需要改变从一个日期/时间2014年8月20日15:30:00看起来像二○一四年八月二十〇日下午3:30

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

Ale*_*ati 105

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

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

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);
Run Code Online (Sandbox Code Playgroud)

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

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

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

  • 我是第一个使用moment.js但在这种情况下问题非常明确:Javascript格式日期/时间.我回答了一段时间,在2012年,我相信能够使用原生的js方法总是好的.现在这些库,比如moment.js甚至更好,所以如果要使用库或纯粹依赖于语言,开发人员真的应该这样做. (2认同)
  • 这个月对我来说是错的.当我使用()时,工作得很好,比如(date.getMonth()+ 1). (2认同)

Mr.*_*irl 65

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

请查看以下JavaScript库:


演示

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

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

  • 哇,12k只是为了格式化日期/时间?有时重新发明轮子是完全有道理的.如果您正在进行大量的日期操作,那么库是正确的方法.如果您需要一个占用空间较小的一次性解决方案,那么您可以尝试http://stackoverflow.com/q/6312993/132599. (43认同)
  • 有时库不是一个选项(例如,在Cloudant服务器上的couchdb数据库上使用javascript时). (4认同)
  • "重新发明轮子" - 更像是换上新轮胎,也许是雪地轮胎以获得更高效的牵引力!moments.js就像坚持在干燥的路面上使用4轮驱动.... (3认同)
  • 普通的Javascript实际上是一个轮子,如果人们不尝试重塑它,Moment.js之类的伟大事物就不会出现。 (2认同)

Bra*_*ray 15

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

var date = new Date('2014-8-20');
console.log((date.getMonth()+1) + '/' + date.getDate() + '/' +  date.getFullYear());
Run Code Online (Sandbox Code Playgroud)

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


小智 11

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

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;
}
Run Code Online (Sandbox Code Playgroud)