在 JavaScript 中获取当前日期和时间

IT技术 javascript date time concatenation
2021-01-14 15:34:26

我有一个用 JavaScript 打印当前日期和时间的脚本,但DATE总是错误的。这是代码:

var currentdate = new Date();
var datetime = "Last Sync: " + currentdate.getDay() + "/" + currentdate.getMonth() 
+ "/" + currentdate.getFullYear() + " @ " 
+ currentdate.getHours() + ":" 
+ currentdate.getMinutes() + ":" + currentdate.getSeconds();

它应该打印18/04/2012 15:07:33和打印3/3/2012 15:07:33

6个回答

.getMonth()返回一个从零开始的数字,因此要获得正确的月份,您需要加 1,因此调用.getMonth()可能会返回4而不是5

所以在你的代码中,我们可以currentdate.getMonth()+1用来输出正确的值。此外:

  • .getDate()返回月份中的日期<- 这是您想要的日期
  • .getDay()Date对象的一个单独的方法,它将返回一个表示当前星期几 (0-6)0 == Sunday的整数

所以你的代码应该是这样的:

var currentdate = new Date(); 
var datetime = "Last Sync: " + currentdate.getDate() + "/"
                + (currentdate.getMonth()+1)  + "/" 
                + currentdate.getFullYear() + " @ "  
                + currentdate.getHours() + ":"  
                + currentdate.getMinutes() + ":" 
                + currentdate.getSeconds();

JavaScript Date 实例继承自 Date.prototype。您可以修改构造函数的原型对象以影响 JavaScript Date 实例继承的属性和方法

您可以使用Date原型对象创建一个新方法,该方法将返回今天的日期和时间。这些新方法或属性将被Date对象的所有实例继承,因此如果您需要重用此功能,则它特别有用。

// For todays date;
Date.prototype.today = function () { 
    return ((this.getDate() < 10)?"0":"") + this.getDate() +"/"+(((this.getMonth()+1) < 10)?"0":"") + (this.getMonth()+1) +"/"+ this.getFullYear();
}

// For the time now
Date.prototype.timeNow = function () {
     return ((this.getHours() < 10)?"0":"") + this.getHours() +":"+ ((this.getMinutes() < 10)?"0":"") + this.getMinutes() +":"+ ((this.getSeconds() < 10)?"0":"") + this.getSeconds();
}

然后,您可以通过执行以下操作简单地检索日期和时间:

var newDate = new Date();
var datetime = "LastSync: " + newDate.today() + " @ " + newDate.timeNow();

或者调用内联方法,所以它只是 -

var datetime = "LastSync: " + new Date().today() + " @ " + new Date().timeNow();
每天 12 小时和上午/下午的小变化 Date.prototype.timeNow = function(){ return ((this.getHours() < 10)?"0":"") + ((this.getHours()>12)?(this.getHours()-12):this.getHours()) +":"+ ((this.getMinutes() < 10)?"0":"") + this.getMinutes() +":"+ ((this.getSeconds() < 10)?"0":"") + this.getSeconds() + ((this.getHours()>12)?('PM'):'AM'); };
2021-03-17 15:34:26
@RobertSpeer 很好的建议。自从上次更新这篇文章以来,我编写了一个更有用的日期对象方法,我调用now()它使用一个布尔参数来确定是只返回日期还是同时返回日期和时间,以及第二个参数,它指定日期的格式应该在即 dd/mm/yyyy 等中返回。
2021-03-18 15:34:26
请注意,在第一个建议中,像 00:04:02 这样的时间将呈现为 0:4:2,这不是我们所要求的。为了解决这个问题,可以添加第二个建议的三元运算符: (date.getHours() < 10 ? "0" : "") + date.getHours() + ":" + (date.getMinutes() < 10 ? "0" : "") + date.getMinutes() + ":" + (date.getSeconds() < 10 ? "0" : "") + date.getSeconds();
2021-03-20 15:34:26
也许有点本质;但是不应该将时间戳存储在临时对象中以避免当前日期/时间在检索/打印方法期间发生变化吗?
2021-04-09 15:34:26
更新:('0' + this.getDate()).slice(-2)似乎比(this.getDate() < 10)?"0":"") + this.getDate()
2021-04-11 15:34:26

要获取您应该使用的时间和日期

    new Date().toLocaleString();

>> "09/08/2014, 2:35:56 AM"

只获取您应该使用的日期

    new Date().toLocaleDateString();

>> "09/08/2014"

只获得你应该使用的时间

    new Date().toLocaleTimeString();

>> "2:35:56 AM"

或者,如果您只想要hh:mm美国英语中没有 AM/PM格式的时间

    new Date().toLocaleTimeString('en-US', { hour12: false, 
                                             hour: "numeric", 
                                             minute: "numeric"});
>> "02:35"

或英式英语

    new Date().toLocaleTimeString('en-GB', { hour: "numeric", 
                                             minute: "numeric"});

>> "02:35"

在这里阅读更多

太糟糕了,您无法轻松获得微/毫秒
2021-03-14 15:34:26
这适用于大多数浏览器,但您可以在此处检查兼容性
2021-03-23 15:34:26
加一。我正在寻找一种方法来保留两个数字。我用的是getHours()getMinutes()之前,但你没有得到的格式,01只1。
2021-04-02 15:34:26

对于真正的 mysql 样式输出,请使用以下函数: 2019/02/28 15:33:12

  • 如果您单击下面的“运行代码段”按钮
  • 它将向您展示一个简单的实时数字时钟示例
  • 该演示将出现在代码片段下方。

function getDateTime() {
        var now     = new Date(); 
        var year    = now.getFullYear();
        var month   = now.getMonth()+1; 
        var day     = now.getDate();
        var hour    = now.getHours();
        var minute  = now.getMinutes();
        var second  = now.getSeconds(); 
        if(month.toString().length == 1) {
             month = '0'+month;
        }
        if(day.toString().length == 1) {
             day = '0'+day;
        }   
        if(hour.toString().length == 1) {
             hour = '0'+hour;
        }
        if(minute.toString().length == 1) {
             minute = '0'+minute;
        }
        if(second.toString().length == 1) {
             second = '0'+second;
        }   
        var dateTime = year+'/'+month+'/'+day+' '+hour+':'+minute+':'+second;   
         return dateTime;
    }

    // example usage: realtime clock
    setInterval(function(){
        currentTime = getDateTime();
        document.getElementById("digital-clock").innerHTML = currentTime;
    }, 1000);
<div id="digital-clock"></div>

只需使用:

var d = new Date();
document.write(d.toLocaleString());
document.write("<br>");
还有类似的东西:toUTCString()。请参阅developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...,其中 是其侧栏上的类似功能列表。
2021-03-23 15:34:26

最短的

我开发了史蒂夫的答案,以获得 OP 所需要的

new Date().toLocaleString().replace(',','')