Làm cách nào để hiển thị thời gian hiện tại trong JavaScript ở định dạng HH: MM: SS?


96

Bạn có thể vui lòng cho tôi biết cách đặt thời gian ở định dạng này HH: MM: SS. Tôi muốn đặt thời gian đó trong một div?


Đây là mã của tôi .. jsfiddle.net/naveennsit/yd99X
user2648752

1
Nhưng vấn đề là nó có PM và AP tôi không cần điều đó định dạng .Secondly 24
user2648752

@ user2648752 kiểm tra bản trình diễn câu trả lời của tôi jsfiddle.net/cse_tushar/fKKSb
Tushar Gupta - curioustushar

1
Ừm ... Tại sao câu hỏi được gắn thẻ ngày , mặc dù người dùng đang hỏi thời gian?
Lloyd Dominic

Câu trả lời:


104

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 chỉ sử dụng javaScript

Cập nhật

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();
})();

111

Bạn có thể sử dụng hàm gốc Date.toLocaleTimeString():

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

Điều này sẽ hiển thị ví dụ:

"11:33:01"

Tôi tìm thấy nó trên http://www.w3schools.com/jsref/jsref_tolocaletimestring.asp


5
tôi nghĩ, đây phải là câu trả lời được chấp nhận, vì nó trả lời chính xác câu hỏi, sử dụng chức năng gốc và là mã làm việc ngắn nhất để nhận được những gì được yêu cầu.
vchrizz 13/12/16

10
3:59:45 chiều là những gì nó đã cho tôi. Đó không phải là định dạng được yêu cầu.
Ivan

toLocaleTimeString không phải là một hàm
Người dùng

59

Bạn có thể làm điều này trong Javascript.

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

Hiện tại nó trở lại 15:5:18. Lưu ý rằng nếu bất kỳ giá trị nào nhỏ hơn 10, chúng sẽ chỉ hiển thị bằng một chữ số, không phải hai.

Kiểm tra điều này trong JSFiddle

Cập nhật:
Để thử số 0 có tiền tố

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

Hãy trả lời câu hỏi này . stackoverflow.com/questions/18227667/…
dùng2648752

Vui lòng trả lời câu hỏi này Tôi cần hiển thị thời gian trong cột đầu tiên.
user2648752

Có, nhưng tôi cần phải thêm ba cột như được viết trong câu hỏi Xin vui lòng đọc thưa ông câu hỏi .Tôi cần thêm thời gian trên cột đầu tiên và dữ liệu thời gian thực trên cột thứ hai
user2648752

Bạn cần tính số phút và giây <10, như Tushar đã làm trong câu trả lời của mình, nếu không nó sẽ không hiển thị số "0" ở đầu.
keepitreal 29/1213

@CleverGirl Tôi đã cố gắng đưa ra câu trả lời đơn giản nên tôi đã viết như vậy. Vì bạn đã đề cập về tiền tố 0, tôi muốn làm điều này với câu trả lời của @ user113716 đã được mô tả rất rõ ràng.
Praveen

40

Bạn có thể sử dụng moment.js để thực hiện việc này.

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

Kết quả đầu ra:

16:30:03

4
Cảm ơn bạn remus. Tôi sẽ không bao giờ rơi xuống cái hố xấu xa của những thao tác datetime của js nữa.
matlembo

Cảm ơn anh bạn! Mỗi người khác làm cho mọi thứ trở nên phức tạp! Đây là câu trả lời ngắn gọn nhất cho những người cần lấy một dòng mã nhanh chóng cho một việc đơn giản!
ChairmanMeow

5
Ẩn 120 byte lẻ cần thiết để thực hiện việc này bằng cách thêm 20k + script! thiên tài
frumbert

1
Hey, Tôi không nói rằng bạn nên luôn luôn sử dụng nó, nhưng nếu bạn đã có, tại sao không làm điều đó một cách dễ dàng 😉
brandonscript

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

Lưu ý rằng toLocaleTimeString () có thể trả về một cái gì đó giống như 9:00:00 AM.


1
Đây là lần đầu tiên tôi thấy ai đó tạo một ví dụ mã khởi tạo ngày mà không có Ngày mới () ... việc sử dụng (Ngày mới) có bình thường không?
OG Sean

5

Sử dụng theo cách này:

var d = new Date();
localtime = d.toLocaleTimeString('en-US', { hour12: false });

Kết quả: 18:56:31


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>

Một cách rất đơn giản bằng cách sử dụng moment.jssetInterval .

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

Đầu ra mẫu

Sử dụng setInterval()đặt thành 1000ms hoặc 1 giây, đầu ra sẽ làm mới sau mỗi 1 giây.

3:25:50 chiều

Đây là cách tôi sử dụng phương pháp này cho một trong những dự án phụ của tôi.

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

Có thể bạn đang tự hỏi liệu việc sử dụng setInterval()có gây ra một số vấn đề về hiệu suất hay không.

CPU setInterval có chuyên sâu không?

Tôi không nghĩ rằng setInterval vốn dĩ sẽ gây ra cho bạn các vấn đề hiệu suất đáng kể. Tôi nghi ngờ danh tiếng có thể đến từ một thời đại trước đó, khi các CPU ít mạnh hơn. ... - một ngày nào đó

Không, setInterval không chuyên sâu về CPU. Nếu bạn có nhiều khoảng thời gian chạy trên các chu kỳ rất ngắn (hoặc một hoạt động rất phức tạp chạy trên một khoảng thời gian dài vừa phải), thì điều đó có thể dễ dàng trở nên tốn nhiều CPU, tùy thuộc vào chính xác khoảng thời gian của bạn đang làm gì và tần suất chúng thực hiện. ... - aroth

Nhưng nói chung, việc sử dụng setInterval thực sự thích trên trang web của bạn có thể làm chậm mọi thứ. 20 khoảng thời gian chạy đồng thời với ít nhiều công việc nặng nhọc sẽ ảnh hưởng đến chương trình. Và một lần nữa .. bạn thực sự có thể làm rối bất kỳ phần nào mà tôi đoán đó không phải là vấn đề của setInterval. ... - jAndy


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

Các it-ITđịa phương xảy ra với pad giờ nếu cần thiết và bỏ qua PM hay PM01:33:01


Mã chỉ câu trả lời này cung cấp những gì so với các giải pháp hiện có chỉ ra cách sử dụng .toLocaleTimeString()?
Jason Aller

phần 'it-IT' có nghĩa là nó xuất ra chính xác như console.log đã hỏi (event.toLocaleTimeString ('it-IT')); // đầu ra dự kiến: 01:15:30 nếu bạn không bao gồm 'it-IT' thì bạn sẽ nhận được một cái gì đó giống như 1:15:30 PMbỏ lỡ số 0 ban đầu và thêm `PM` mà bạn phải loại bỏ nếu không. Tôi đã chỉnh sửa câu trả lời của mình để làm rõ điều đó.
iamnotsam

1

Mã này sẽ xuất ra thời gian hiện tại ở định dạng HH: MM: SS trong bảng điều khiển, nó tính đến múi giờ 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

0

Đây là một ví dụ về cách đặt thời gian trong một div (only_time) bằng cách sử dụng 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>

Mặc dù khối mã này có thể trả lời câu hỏi, nhưng tốt nhất là bạn có thể cung cấp một chút giải thích cho lý do tại sao nó lại như vậy.
Peter
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.