ฉันจะได้รับเวลาปัจจุบันเฉพาะใน JavaScript ได้อย่างไร


144

ฉันจะรับเวลาปัจจุบันใน JavaScript และใช้ในการจับเวลาได้อย่างไร

ฉันลองvar x = Date()แล้วได้:

อังคาร 15 พฤษภาคม 2012 05:45:40 GMT-0500

แต่ฉันต้องการเวลาปัจจุบันเท่านั้นตัวอย่างเช่น 05:45

ฉันจะกำหนดสิ่งนี้ให้กับตัวแปรได้อย่างไร


15
@swati เพราะเราต้องการให้นี่เป็นแหล่งของ goto สำหรับปัญหาการเขียนโปรแกรมทั้งหมดของเรา บางทีคนอื่นอาจมีทางออกที่ดีกว่าและวิธีนี้พวกเขาทั้งหมดจะถูกระบุว่าเป็นข้อมูลอ้างอิงในที่เดียว
อัลเฟรด

27
@swati - ฉันรู้ว่าคุณเขียนความคิดเห็นนั้นเมื่อ 3 ปีที่แล้ว แต่ตอนนี้หน้านี้เป็นผลการค้นหา # 1 ใน Google สำหรับ "รับส่วนเวลา JavaScript" โปรดทราบว่าคำถามของวันนี้คือผลการค้นหาในวันพรุ่งนี้
David Deutsch

@DavidDeutsch ควรเป็นแบบตัวหนาในหน้าถามคำถาม "คำถามของวันนี้คือผลการค้นหาในวันพรุ่งนี้"
Vaulstein

คำตอบ:


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 สากลที่ถูกต้อง BTW ฉันเห็นundefinedใน IE เท่านั้น คงอยู่แล้ว
Royi Namir

126

สั้นและง่าย:

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

4 ชั่วโมงต่อมา (ใช้ milisec: sec == 1,000):

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

80

รับและตั้งเวลาปัจจุบันอย่างมีประสิทธิภาพโดยใช้ javascript

ฉันไม่พบวิธีแก้ปัญหาที่ทำในสิ่งที่ฉันต้องการ ฉันต้องการโค้ดที่สะอาดและเล็ก ๆ ดังนั้นฉันจึงได้:

(ตั้งหนึ่งครั้งใน master.js ของคุณและเรียกใช้เมื่อจำเป็น)

จาวาสคริปต์บริสุทธิ์

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" />


UPDATE

ขณะนี้มีการสนับสนุนเบราว์เซอร์เพียงพอที่จะใช้: toLocaleTimeString

สำหรับHTML5ประเภทรูปแบบจะต้องtimehh: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 คำตอบของฉันทำทั้งสองอย่าง จาวาสคริปต์ได้รับเวลาและ html แสดงให้ผู้ใช้ทราบว่าสามารถใช้รหัสเพื่อกำหนดเวลาได้อย่างไรหากจำเป็น ฉันได้อัปเดตคำตอบของฉันเพื่อสะท้อนว่า ขอบคุณที่ชี้นำ
DreamTeK

เวลาแสดงสำหรับฉัน 30 นาทีถ้าฉันคลิกที่ Set time มันถูกต้อง แต่ในเวลาทหาร ตั้งเวลาควรสลับเดาว่ามันใช้งานไม่ได้
Ciasto piekarz

toLocaleTime จะมีรูปแบบที่แตกต่างกันไปขึ้นอยู่กับภาษาของเบราว์เซอร์แทนคุณสามารถใช้สถานที่คงที่โดยไม่มี PM / AM เช่น fr เพื่อให้ได้เวลาที่ตรงกับรูปแบบเวลา html5new 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




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 รหัสข้างต้นควรทำงานได้อย่างสมบูรณ์
Hamfri


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) Python ฉันขอขอบคุณหนึ่งซับลึกลับที่คุณให้และจะไม่ได้เลื่อนลงไปที่หน้าพอที่จะดูคำตอบสั้น ๆ ของ Parmeet Singh (ซึ่งฉันคิดว่าคุณหมายถึง) ขอบคุณ!
Jason R Stevens CFA



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

-2

นี้ทำงานสำหรับฉัน แต่นี้ขึ้นอยู่กับสิ่งที่คุณได้รับเมื่อคุณตีDate():

Date().slice(16,-12)

ซึ่งดูเหมือนกับคำตอบที่มีอยู่: stackoverflow.com/a/46599746/3294944
stealththeninja

@stealththeninja: มันไม่เหมือนกัน การทำเช่นนี้จะทำให้เกิดวินาทีและโซนเวลาเช่นกัน
Dan Dascalescu

-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;
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.