如何仅使用JavaScript获取当前时间


144

如何获取JavaScript中的当前时间并将其用于时间选择器?

我尝试var x = Date()并得到:

2012年5月15日星期二05:45:40 GMT-0500

但是例如,我只需要当前时间, 05:45

如何将其分配给变量?


15
@swati因为我们希望这成为我们所有编程问题的转到源。也许其他人有更好的解决方案,这样他们就可以全部列为参考。
2014年

27
@swati-我知道您在3年前就写了该评论,但现在此页面是Google中“获取JavaScript的一部分”的搜索结果中排名第一。请记住,今天的问题就是明天的搜索结果。
David Deutsch

@DavidDeutsch这应该像“询问问题”页面上的粗体标题。“今天的问题就是明天的搜索结果”
Vaulstein,

Answers:


220
var d = new Date("2011-04-20T09:30:51.01");
d.getHours(); // => 9
d.getMinutes(); // =>  30
d.getSeconds(); // => 51

要么

var d = new Date(); // for now
d.getHours(); // => 9
d.getMinutes(); // =>  30
d.getSeconds(); // => 51

1
var d = new Date("2011-04-20 09:30:51.01"); alert(d.getHours()); // => 9 输出NaN
Chinmay235

1
@ Chinmay235添加,T所以现在是正确的通用iso。顺便说一句,我只undefined在IE中看到。无论如何固定的。
罗伊·纳米尔

125

简短:

new Date().toLocaleTimeString(); // 11:18:48 AM
//---
new Date().toLocaleDateString(); // 11/16/2015
//---
new Date().toLocaleString(); // 11/16/2015, 11:18:48 PM

4小时后(使用毫秒:秒== 1000):

new Date(new Date().getTime() + 4*60*60*1000).toLocaleTimeString(); // 3:18:48 PM or 15:18:48

前2天:

new Date(new Date().getTime() - 2*24*60*60*1000).toLocaleDateString() // 11/14/2015

6
加减法的计算很有帮助!
Dov Miller

如果我想增加1分钟,我需要将其更改为什么?
lets0code

78

使用javascript有效获取和设置当前时间

我找不到能完全满足我需求的解决方案。我想要干净且小巧的代码,所以我想到了:

(在master.js中设置一次,并在需要时调用。)

纯JAVASCRIPT

function timeNow(i) {
  var d = new Date(),
    h = (d.getHours()<10?'0':'') + d.getHours(),
    m = (d.getMinutes()<10?'0':'') + d.getMinutes();
  i.value = h + ':' + m;
}
<a onclick="timeNow(test1)" href="#">SET TIME</a>
<input id="test1" type="time" value="10:40" />


更新

现在有足够的浏览器支持可以简单地使用: toLocaleTimeString

对于html5类型time,格式必须为hh:mm

function timeNow(i) {
  i.value = new Date().toLocaleTimeString([], {hour: '2-digit', minute:'2-digit'});
}
<a onclick="timeNow(test1)" href="#">SET TIME</a>
<input id="test1" type="time" value="10:40" />

Try it on jsfiddle


3
@ gcoleman0828我参加聚会很晚。感谢您的投票:)
DreamTeK

...您打错了“设置”为“设定”吗?如果不是,则答案与标题不符,标题与问题不符。
基金莫妮卡的诉讼

@QPaysTaxes我的答案都可以。javascript获取时间,并且html向用户显示如何在需要时使用代码设置时间。我已经更新了我的答案以反映这一点。感谢您指出。
DreamTeK

时间对我来说显示晚了30分钟,如果我单击“设置时间”,那是正确的,但在军事时间。设定时间应该切换到
无效的

根据浏览器的语言环境,toLocaleTime将具有不同的格式,相反,您可以使用不带PM / AM的固定语言环境(如fr)来获取与html5时间格式匹配的时间new Date().toLocaleTimeString('fr', {hour: '2-digit', minute:'2-digit'});
Tofandel

24

尝试

new Date().toLocaleTimeString().replace("/.*(\d{2}:\d{2}:\d{2}).*/", "$1");

要么

new Date().toTimeString().split(" ")[0];

在第二种形式中,如果仅使用toString()并将0更改为4,则您还可以获得格式为HH:MM:SS的时间。
BigMac66 '16

9

你的意思是:

var d = new Date();
var curr_hour = d.getHours();
var curr_min = d.getMinutes();



5
function getCurrentTime(){
    var date = new Date();
    var hh = date.getHours();
    var mm = date.getMinutes();

    hh = hh < 10 ? '0'+hh : hh; 
    mm = mm < 10 ? '0'+mm : mm;

    curr_time = hh+':'+mm;
    return curr_time;
}

如果您所需要的只是没有几秒钟的时间,并且您不需要PM或AM零件,那么上面的代码应该可以正常工作。
汉弗里


3

这就是您的方法。

const date = new Date();
const time = date.toTimeString().split(' ')[0].split(':');
console.log(time[0] + ':' + time[1])


1
这至少是神秘的或更好的new Date().toTimeString().slice(0, 5)
Dan Dascalescu,

1
@DanDascalescu作为一个(主要的)Python开发人员,我感谢您提供的神秘的一线式工具,并且在页面上滚动得不够远,无法看到Parmeet Singh的简洁答案(我假设您是在指的)。谢谢!
Jason R Stevens CFA


1

您可以简单地使用此方法。

console.log(new Date().toLocaleTimeString([], { hour: '2-digit', minute: "2-digit", hour12: false }));
console.log(new Date().toLocaleTimeString([], { hour: '2-digit', minute: "2-digit" }));


0

这是最短的方法。

var now = new Date().toLocaleTimeString();
console.log(now)

这也是未提及的字符串操作方式。

var now = new Date()
console.log(now.toString().substr(16,8))

最短的是Date().substr(16, 5)。您不需要toString()
Dan Dascalescu,

0

分配给变量并显示它。

time = new Date();

var hh = time.getHours();
var mm = time.getMinutes();
var ss = time.getSeconds() 

document.getElementById("time").value = hh + ":" + mm + ":" + ss;

为什么假定需要将其存储在time元素中?OP要求将其存储在变量中,并且只存储小时和分钟。let time = Date().substr(16, 5)做到这一点。
Dan Dascalescu,

0

简单的功能可将日期和时间分开,并具有与时间和日期HTML输入兼容的格式

function formatDate(date) {
  var d         = new Date(date),
      month = '' + (d.getMonth() + 1),
      day   = '' + d.getDate(),
      year  = d.getFullYear();

  if (month.length < 2) month = '0' + month;
  if (day.length < 2) day = '0' + day;

  return [year, month, day].join('-');
}

function formatTime(date) {
        var hours   = new Date().getHours() > 9 ? new Date().getHours() : '0' + new Date().getHours()
        var minutes = new Date().getMinutes() > 9 ? new Date().getMinutes() : '0' + new Date().getMinutes()

        return hours + ':' + minutes
}

-1
var today = new Date();  //gets current date and time
var hour = today.getHours();         
var minute = today.getMinutes();
var second = today.getSeconds();

1
如何为现有答案添加任何内容?核心问题是缺少new
RomainValeri


-3
var hours = date.getHours();
        var minutes = date.getMinutes();
        var ampm = hours >= 12 ? 'pm' : 'am';
        hours = hours % 12;
        hours = hours ? hours : 12; // the hour '0' should be '12'
        minutes = minutes < 10 ? '0'+minutes : minutes;
        var strTime = hours + ':' + minutes + ' ' + ampm;
        console.log(strTime);
        $scope.time = strTime;

        date.setDate(date.getDate()+1);
        month = '' + (date.getMonth() + 1),
        day = '' + date.getDate(1),
        year = date.getFullYear();
        if (month.length < 2) month = '0' + month;
        if (day.length < 2) day = '0' + day;
        var tomorrow = [year, month, day].join('-');
        $scope.tomorrow = tomorrow;
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.