【问题标题】: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/

【讨论】:

  • 用 0 显示一位数分钟,例如 9 为 '09'
【解决方案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')));
});
&lt;script src="http://requirejs.org/docs/release/2.1.8/minified/require.js"&gt;&lt;/script&gt;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多