在javascript中格式化日期值

时间:2015-01-03 02:16:09

标签: javascript date datetime

HTML

<input type="datetime-local" onblur="window.setValue(this.value)" />

enter image description here

JS

window.setValue = function (val) {
    console.log(val);
}

上面的输出是1991-03-02T00:01,如何获得确切的值?与03/02/1991 12:01 AM一样。

2 个答案:

答案 0 :(得分:0)

function formatDate(date) {
  var hours = date.getHours();
  var minutes = date.getMinutes();
  var format = hours < 12 ? 'am' : 'pm';
  hours = hours % 12;
  hours = hours ? hours : 12; // making 0 a 12
  minutes = minutes < 10 ? '0'+minutes : minutes;
  var time = hours + ':' + minutes + ' ' + format;
  return date.getMonth()+1 + "/" + date.getDate() + "/" + date.getFullYear() + " " + time;
}

var date = new Date();
var output = formatDate(date);
alert(output);

演示 http://jsfiddle.net/64oyzhng/3/

答案 1 :(得分:0)

使用javascript非常容易,如@chrana所示。还有一些库使用javascript的本地Date对象并允许格式化,moments.js就是其中之一。我也一直在开发一个库,它也允许使用标准CLDR notation格式化日期,但不依赖于Date,而是所有内容都是用纯数学完成的,用于精确的天文学约会。

您显示的格式与标准美国短日期非常相似,但您没有,

03/02/1991, 12:01 AM

但是使用我的库和任何使用CLDR表示法的库,可以这样做。

MM/dd/Y h:mm a

&#13;
&#13;
require.config({
    paths: {
        'astrodate': '//rawgit.com/Xotic750/astrodate/master/lib/astrodate'
    }
});

require(['astrodate'], function (AstroDate) {
    "use strict";
    
    var date = new AstroDate('1991-03-02T00:01');

    document.body.appendChild(document.createTextNode(date.format('MM/dd/Y h:mm a')));
});
&#13;
<script src="http://requirejs.org/docs/release/2.1.8/minified/require.js"></script>
&#13;
&#13;
&#13;