【问题标题】:Formatting date value in javascript在javascript中格式化日期值
【发布时间】:2015-01-03 02:16:09
【问题描述】:
HTML
<input type="datetime-local" onblur="window.setValue(this.value)" />
JS
window.setValue = function (val) {
console.log(val);
}
上面的输出是1991-03-02T00:01,如何得到准确的值?喜欢03/02/1991 12:01 AM。
【问题讨论】:
标签:
javascript
date
datetime
【解决方案1】:
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/
【解决方案2】:
正如@chrana 所展示的,仅使用 javascript 就很容易做到。还有一些库使用 javascript 的原生 Date 对象并允许格式化,moments.js 就是其中之一。我还一直在开发一个库,该库还允许使用标准 CLDR notation 格式化日期,但不依赖于 Date,而是一切都在纯数学中完成,以实现准确的天文学约会。
您显示的格式与标准的美国短日期非常相似,只是您没有,
03/02/1991, 12:01 AM
但是使用我的库和任何使用 CLDR 表示法的库都可以这样做。
MM/dd/Y h:mm a
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')));
});
<script src="http://requirejs.org/docs/release/2.1.8/minified/require.js"></script>