【问题标题】:JavaScript getMonth [duplicate]JavaScript getMonth [重复]
【发布时间】:2013-05-24 21:40:13
【问题描述】:

我正在尝试使用 JavaScript 在我的 web 应用程序上显示日期和时间。

虽然我已经成功执行此操作,但我的日期和时间打印为 29/5/13。如果小于十,我希望它在月前有一个零。我曾尝试使用 if 语句,但没有太多成功。我目前拥有的代码是:

<script language="javascript"> 

    today = new Date(); 
    document.write("<BR>Time: ", today.getHours(),":",today.getMinutes()); 
    document.write("<BR>Date: ", today.getDate(),"/",today.getMonth()+1,"/",today.getYear()-100);


</script>

任何帮助将不胜感激。

【问题讨论】:

  • “尝试使用 if 语句,但没有取得多大成功” - 你到底尝试了什么?

标签: javascript datetime


【解决方案1】:

试试这个:

var today = new Date();
var month = ((today.getMonth() + 1) < 10) ? '0' + (today.getMonth() + 1) : (today.getMonth() + 1);
document.write("<BR>Time: ", today.getHours(), ":", today.getMinutes());
document.write("<BR>Date: ", today.getDate(), "/", month, "/", today.getYear() - 100);

jsFiddle example

【讨论】:

  • 为什么要打两次getMonth()?可以很容易地进行优化。
  • 效果很好,非常感谢。
  • @ShadowWizard - 虽然多次调用getMonth() 不会使任何人的系统崩溃,但我确信可以重构代码以节省几个字节。我只是在解决 OP 的基本问题。
  • 为什么投反对票?这在某种程度上是错误的还是没有用的?
  • 这里的 9 点 5 分也是 9:5
【解决方案2】:

Live Demo

function pad(num) {
  return ("0"+num).slice(-2);
}

使用方法:

+  pad(today.getMonth()+1))

【讨论】:

【解决方案3】:

用零填充的另一种方式

function zfill(str, len) {
    var i = len - (''+str).length + 1;
    if (i > 0) return new Array(i).join('0') + str;
    return ''+str;
}

然后

zfill(5, 2); // "05"

【讨论】:

  • 喜欢这个。 new Array(i).join('0') 部分特别聪明。
【解决方案4】:

试试这个:

var d = new Date();
var month = d.getMonth()+1;
if (month.toString().length!==2) { month="0"+month; }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多