จะแสดงเวลาปัจจุบันใน JavaScript ในรูปแบบ HH: MM: SS ได้อย่างไร?


102

ช่วยบอกวิธีตั้งเวลาในรูปแบบนี้ HH: MM: SS ได้ไหมฉันต้องการตั้งค่านี้เป็น div


นี่คือรหัสของฉัน .. jsfiddle.net/naveennsit/yd99X
user2648752

1
แต่ปัญหาคือมี PM และ AP ฉันไม่ต้องการสิ่งนั้นรูปแบบที่สอง 24
user2648752

@ user2648752 ตรวจสอบคำตอบของฉันสาธิตjsfiddle.net/cse_tushar/fKKSb
Tushar Gupta - curioustushar

1
อืม ... ทำไมคำถามถึงแท็กวันที่ทั้งๆที่ผู้ใช้ถามเวลา
Lloyd Dominic

คำตอบ:


111

function checkTime(i) {
  if (i < 10) {
    i = "0" + i;
  }
  return i;
}

function startTime() {
  var today = new Date();
  var h = today.getHours();
  var m = today.getMinutes();
  var s = today.getSeconds();
  // add a zero in front of numbers<10
  m = checkTime(m);
  s = checkTime(s);
  document.getElementById('time').innerHTML = h + ":" + m + ":" + s;
  t = setTimeout(function() {
    startTime()
  }, 500);
}
startTime();
<div id="time"></div>

DEMOโดยใช้ javaScript เท่านั้น

อัปเดต

Updated Demo

(function () {
    function checkTime(i) {
        return (i < 10) ? "0" + i : i;
    }

    function startTime() {
        var today = new Date(),
            h = checkTime(today.getHours()),
            m = checkTime(today.getMinutes()),
            s = checkTime(today.getSeconds());
        document.getElementById('time').innerHTML = h + ":" + m + ":" + s;
        t = setTimeout(function () {
            startTime()
        }, 500);
    }
    startTime();
})();

121

คุณสามารถใช้ฟังก์ชันเนทีฟDate.toLocaleTimeString():

var d = new Date();
var n = d.toLocaleTimeString();

สิ่งนี้จะแสดงเช่น:

"11:33:01"

ฉันพบที่http://www.w3schools.com/jsref/jsref_tolocaletimestring.asp


5
ฉันคิดว่านี่ควรเป็นคำตอบที่ยอมรับได้เพราะมันตอบคำถามได้ตรงประเด็นใช้ฟังก์ชันเนทีฟและเป็นรหัสการทำงานที่สั้นที่สุดเพื่อรับสิ่งที่ถาม
vchrizz

11
15:59:45 น. คือสิ่งที่ให้ฉัน นั่นไม่ใช่รูปแบบที่ร้องขอ
Ivan

toLocaleTimeString ไม่ใช่ฟังก์ชัน
ผู้ใช้

ในหนึ่งบรรทัดnew Date().toLocaleTimeString()
aljgom

65

คุณสามารถทำได้ในJavascript.

var time = new Date();
console.log(time.getHours() + ":" + time.getMinutes() + ":" + time.getSeconds());

15:5:18ที่ผลตอบแทนมันปัจจุบัน โปรดทราบว่าหากค่าใด ๆ น้อยกว่า 10 ค่าจะแสดงโดยใช้ตัวเลขเพียงหลักเดียวไม่ใช่สองหลัก

ตรวจสอบสิ่งนี้ในJSFiddle

อัปเดต:
สำหรับคำนำหน้า 0 ลอง

var time = new Date();
console.log(
    ("0" + time.getHours()).slice(-2)   + ":" + 
    ("0" + time.getMinutes()).slice(-2) + ":" + 
    ("0" + time.getSeconds()).slice(-2));

กรุณาตอบคำถามนี้ stackoverflow.com/questions/18227667/…
user2648752

โปรดตอบคำถามนี้ฉันต้องแสดงเวลาในคอลัมน์แรก
user2648752

ใช่ แต่ฉันต้องการเพิ่มสามคอลัมน์ตามที่เขียนไว้ในคำถามโปรดอ่านคำถามของคุณฉันต้องการเวลาเพิ่มในคอลัมน์แรกและข้อมูลเรียลไทม์ในคอลัมน์ที่สอง
user2648752

คุณต้องคิดเป็นนาทีและวินาที <10 ตามที่ Tushar ตอบในคำตอบของเขามิฉะนั้นจะไม่แสดง "0" นำหน้า
keepitreal

@CleverGirl ฉันพยายามให้คำตอบง่ายๆดังนั้นฉันจึงเขียนอย่างนั้น เนื่องจากคุณได้กล่าวถึง 0 ที่นำหน้าฉันอยากจะทำสิ่งนี้ด้วยคำตอบของ @ user113716ซึ่งแสดงให้เห็นอย่างชัดเจน
ประวีณ

40

คุณสามารถใช้moment.jsเพื่อทำสิ่งนี้

var now = new moment();
console.log(now.format("HH:mm:ss"));

ผลลัพธ์:

16:30:03

4
ขอบคุณรีมัส ฉันจะไม่ล้มลงไปในโพรงกระต่ายที่ฝังแน่นของ js datetime manipulations อีกแล้ว
matlembo

ขอบคุณ! ทุกคนทำให้ทุกอย่างซับซ้อน! นี่คือคำตอบที่รวบรัดที่สุดสำหรับคนที่ต้องการโค้ดสั้น ๆ สำหรับเรื่องง่ายๆ!
ChairmanMeow

5
ซ่อนไบต์ 120 คี่ที่ใช้ในการทำสิ่งนี้โดยรวมสคริปต์ 20k +! อัจฉริยะ
frumbert

1
เฮ้ฉันไม่ได้บอกว่าคุณควรใช้มันเสมอไป แต่ถ้าคุณเป็นอยู่แล้วทำไมไม่ทำวิธีง่ายๆ😉
brandonscript

30
new Date().toTimeString().slice(0,8)

โปรดทราบว่า toLocaleTimeString () 9:00:00 AMจะกลับมาบางอย่างเช่น


1
นี่เป็นครั้งแรกที่ฉันเห็นคนสร้างตัวอย่างโค้ดอินสแตนซ์วันที่โดยไม่มี Date () ใหม่ ... เป็นปกติที่จะใช้ (วันที่ใหม่) หรือไม่?
OG Sean


2

รหัสนี้จะแสดงเวลาปัจจุบันในรูปแบบ HH: MM: SS ในคอนโซลโดยคำนึงถึงเขตเวลา GMT

var currentTime = Date.now()
var GMT = -(new Date()).getTimezoneOffset()/60;
var totalSeconds = Math.floor(currentTime/1000);
seconds = ('0' + totalSeconds % 60).slice(-2);
var totalMinutes = Math.floor(totalSeconds/60);
minutes = ('0' + totalMinutes % 60).slice(-2);
var totalHours = Math.floor(totalMinutes/60);
hours = ('0' + (totalHours+GMT) % 24).slice(-2);
var timeDisplay = hours + ":" + minutes + ":" + seconds;
console.log(timeDisplay);
//Output is: 11:16:55

2

function realtime() {
  
  let time = moment().format('h:mm:ss a');
  document.getElementById('time').innerHTML = time;
  
  setInterval(() => {
    time = moment().format('h:mm:ss a');
    document.getElementById('time').innerHTML = time;
  }, 1000)
}

realtime();
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.min.js"></script>

<div id="time"></div>

วิธีที่ง่ายมากในการใช้moment.jsและsetInterval

setInterval(() => {
  moment().format('h:mm:ss a');
}, 1000)

เอาต์พุตตัวอย่าง

เมื่อใช้การsetInterval()ตั้งค่าเป็น 1000ms หรือ 1 วินาทีเอาต์พุตจะรีเฟรชทุก 1 วินาที

15:25:50 น

นี่คือวิธีที่ฉันใช้วิธีนี้กับหนึ่งในโครงการด้านข้างของฉัน

setInterval(() => {
  this.time = this.shared.time;
}, 1000)

บางทีคุณอาจสงสัยว่าการใช้setInterval()จะทำให้เกิดปัญหาด้านประสิทธิภาพหรือไม่

setInterval CPU เข้มข้นหรือไม่

ฉันไม่คิดว่า setInterval จะทำให้คุณมีปัญหาด้านประสิทธิภาพที่สำคัญ ฉันสงสัยว่าชื่อเสียงอาจมาจากยุคก่อนเมื่อซีพียูมีประสิทธิภาพน้อยกว่า ... - วันเหงา

ไม่ setInterval ไม่ใช่ CPU ที่เข้มข้นในตัวมันเอง หากคุณมีช่วงเวลาจำนวนมากที่ทำงานในรอบสั้น ๆ (หรือการดำเนินการที่ซับซ้อนมากซึ่งทำงานในช่วงเวลาที่ยาวนานพอสมควร) สิ่งนั้นอาจกลายเป็น CPU ที่เข้มข้นได้อย่างง่ายดายขึ้นอยู่กับช่วงเวลาที่คุณทำและความถี่ที่พวกเขาทำ ... - อาโร ธ

แต่โดยทั่วไปแล้วการใช้ setInterval มาก ๆ บนไซต์ของคุณอาจทำให้สิ่งต่างๆช้าลง ช่วงเวลาที่วิ่งพร้อมกัน 20 ครั้งโดยมีงานหนักมากหรือน้อยจะส่งผลต่อการแสดง แล้วอีกครั้ง .. คุณสามารถทำส่วนใดส่วนหนึ่งที่ยุ่งเหยิงได้ฉันเดาว่าไม่ใช่ปัญหาของ setInterval ... - jAndy


2
new Date().toLocaleTimeString('it-IT')

it-ITสถานที่เกิดเหตุที่เกิดขึ้นกับแผ่นชั่วโมงถ้าจำเป็นและละเว้น PM หรือน01:33:01


สิ่งที่ไม่รหัสนี้เพียงตอบข้อเสนอมากกว่าการแก้ปัญหาที่มีอยู่ที่แสดงวิธีการใช้.toLocaleTimeString()?
Jason Aller

ส่วน 'it-IT' หมายความว่าเอาต์พุตตรงตามที่ถาม console.log (event.toLocaleTimeString ('it-IT')); // ผลลัพธ์ที่คาดหวัง: 01:15:30 หากคุณไม่รวม 'it-IT' แสดงว่าคุณได้รับสิ่ง1:15:30 PMที่คิดถึง 0 เริ่มต้นและเพิ่ม "PM" ซึ่งคุณจะต้องตัดออก ฉันแก้ไขคำตอบของฉันเพื่อให้ชัดเจนขึ้น
iamnotsam

0

นี่คือตัวอย่างวิธีการตั้งเวลาใน div (only_time) โดยใช้ javascript

function date_time() {
    var date = new Date();
    var am_pm = "AM";
    var hour = date.getHours();
    if(hour>=12){
        am_pm = "PM";
    }
    if (hour == 0) {
        hour = 12;
    }
    if(hour>12){
        hour = hour - 12;
    }
    if(hour<10){
        hour = "0"+hour;
    }

    var minute = date.getMinutes();
    if (minute<10){
        minute = "0"+minute;
    }
    var sec = date.getSeconds();
    if(sec<10){
        sec = "0"+sec;
    }

    document.getElementById("time").innerHTML =  hour+":"+minute+":"+sec+" "+am_pm;
}
setInterval(date_time,500);
<per>
<div class="date" id="time"></div>
</per>

แม้ว่าบล็อกโค้ดนี้อาจตอบคำถามได้ แต่จะเป็นการดีที่สุดหากคุณสามารถให้คำอธิบายเล็กน้อยว่าเหตุใดจึงเป็นเช่นนั้น
Peter


0

function realtime() {
  
  let time = moment().format('hh:mm:ss.SS a').replace("m", "");
  document.getElementById('time').innerHTML = time;
  
  setInterval(() => {
    time = moment().format('hh:mm:ss.SS A');
    document.getElementById('time').innerHTML = time;
  }, 0)
}

realtime();
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.min.js"></script>

<div id="time"></div>


โปรดอย่าโพสต์โค้ดเพื่อเป็นคำตอบเท่านั้น แต่ให้อธิบายด้วยว่าโค้ดของคุณใช้ทำอะไรและแก้ปัญหาของคำถามได้อย่างไร คำตอบพร้อมคำอธิบายมักจะมีประโยชน์มากกว่าและมีคุณภาพดีกว่าและมีแนวโน้มที่จะดึงดูดการโหวตมากขึ้น
Tyler2P
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.