Ngày và giờ – ngày và giờ js

Bạn đang xem : ngày và giờ j

Hãy gặp một đối tượng tích hợp mới: Ngày . Nó lưu trữ ngày, giờ và cung cấp các phương pháp quản lý ngày / giờ.

Ví dụ: chúng tôi có thể sử dụng nó để lưu trữ thời gian tạo / sửa đổi, để đo thời gian hoặc chỉ để in ra ngày hiện tại.

Để tạo một đối tượng Date mới, hãy gọi new Date () với một trong các đối số sau:

new Date ()

Không có đối số – tạo đối tượng Date cho ngày và giờ hiện tại:


  let now = new Date ();
cảnh báo (bây giờ); // hiển thị ngày / giờ hiện tại  
new Date (mili giây)

Tạo đối tượng Date với thời gian bằng số mili giây (1/1000 giây) sau ngày 1 tháng 1 năm 1970 UTC + 0.


  // 0 nghĩa là 01.01.1970 UTC + 0
let Jan01_1970 = new Date (0);
cảnh báo (Jan01_1970);

// bây giờ thêm 24 giờ, nhận 02.01.1970 UTC + 0
let Jan02_1970 = new Date (24 * 3600 * 1000);
cảnh báo (Jan02_1970);  

Một số nguyên đại diện cho số mili giây đã trôi qua kể từ đầu năm 1970 được gọi là dấu thời gian.

Đó là một biểu thị số nhẹ của ngày. Chúng tôi luôn có thể tạo ngày từ dấu thời gian bằng cách sử dụng new Date (timestamp) và chuyển đổi đối tượng Date hiện có thành dấu thời gian bằng cách sử dụng date.getTime () method (xem bên dưới).

Các ngày trước 01.01.1970 có dấu thời gian âm, ví dụ:


  // ngày 31 tháng 12 năm 1969
let Dec31_1969 = new Date (-24 * 3600 * 1000);
cảnh báo (Dec31_1969);  
new Date (datestring)

Nếu có một đối số duy nhất và đó là một chuỗi thì nó sẽ được phân tích cú pháp tự động. Thuật toán giống như cách sử dụng Date.parse , chúng ta sẽ đề cập đến nó sau.


  let date = new Date ("2017-01-26");
cảnh báo (ngày tháng);
// Thời gian không được đặt, vì vậy nó được giả định là nửa đêm theo giờ GMT và
// được điều chỉnh theo múi giờ mà mã được chạy
// Vì vậy, kết quả có thể là
// Thứ Năm, ngày 26 tháng 1 năm 2017 11:00:00 GMT + 1100 (Giờ ban ngày miền Đông Úc)
// hoặc
// Thứ Tư ngày 25 tháng 1 năm 2017 16:00:00 GMT-0800 (Giờ Chuẩn Thái Bình Dương)  
new Ngày (năm, tháng, ngày, giờ, phút, giây, mili giây)

Tạo ngày bằng các thành phần đã cho theo múi giờ địa phương. Chỉ hai đối số đầu tiên là bắt buộc.

  • năm phải có 4 chữ số. Để tương thích, 2 chữ số cũng được chấp nhận và được coi là 19xx , ví dụ: 98 giống với 1998 ở đây, nhưng luôn khuyến khích sử dụng 4 chữ số.
  • Đếm tháng bắt đầu bằng 0 (Jan), lên đến 11 (Dec).
  • Tham số date thực tế là ngày trong tháng, nếu không có thì 1 được giả định.
  • Nếu giờ / phút / giây / ms không có, chúng được coi là bằng 0 .

Ví dụ:

  new Ngày (2011, 0, 1, 0, 0, 0, 0); // ngày 1 tháng 1 năm 2011, 00:00:00
ngày mới (2011, 0, 1); // giống nhau, giờ, v.v ... theo mặc định là 0  

Độ chính xác tối đa là 1 ms (1/1000 giây):


  let date = new Ngày (2011, 0, 1, 2, 3, 4, 567);
cảnh báo (ngày tháng); // 1.01.2011, 02: 03: 04.567  

Có các phương pháp để truy cập năm, tháng, v.v. từ đối tượng Ngày :

getFullYear ()
Lấy năm (4 chữ số)
getMonth ()
Lấy tháng, từ 0 đến 11 .
getDate ()
Lấy ngày trong tháng, từ 1 đến 31, tên của phương thức trông hơi lạ.
getHours () , getMinutes () , getSeconds () , getMilliseconds ()
Nhận các thành phần thời gian tương ứng.

Không phải getYear () , mà là getFullYear ()

Nhiều công cụ JavaScript triển khai một phương thức không chuẩn getYear () . Phương pháp này không được dùng nữa. Nó đôi khi trả về năm 2 chữ số. Xin đừng bao giờ sử dụng nó. Có getFullYear () cho năm.

Ngoài ra, chúng ta có thể nhận được một ngày trong tuần:

getDay ()
Nhận ngày trong tuần, từ 0 (Chủ nhật) đến 6 (Thứ bảy). Ngày đầu tiên luôn là Chủ nhật, ở một số quốc gia không phải vậy, nhưng không thể thay đổi.

Tất cả các phương pháp ở trên trả về các thành phần liên quan đến múi giờ địa phương.

Ngoài ra còn có các đối tác UTC của họ, ngày, tháng, năm trả lại, v.v. cho múi giờ UTC + 0: getUTCFullYear () , getUTCMonth () , getUTCDay () . Chỉ cần chèn "UTC" ngay sau "get" .

Nếu múi giờ địa phương của bạn được thay đổi so với UTC, thì mã bên dưới hiển thị các giờ khác nhau:


  // ngày hiện tại
let date = new Date ();

// giờ trong múi giờ hiện tại của bạn
alert (date.getHours ());

// giờ ở múi giờ UTC + 0 (giờ Luân Đôn không tính tiết kiệm ánh sáng ban ngày)
alert (date.getUTCHours ());  

Bên cạnh các phương pháp đã cho, có hai phương pháp đặc biệt không có biến thể UTC:

getTime ()

Trả về dấu thời gian cho ngày - một số mili giây đã trôi qua kể từ ngày 1 tháng 1 năm 1970 UTC + 0.

getTimezoneOffset ()

Trả về chênh lệch giữa UTC và múi giờ địa phương, tính bằng phút:


  // nếu bạn ở múi giờ UTC-1, kết quả đầu ra là 60
// nếu bạn đang ở múi giờ UTC + 3, kết quả đầu ra là -180
alert (new Date (). getTimezoneOffset ());  

Các phương pháp sau cho phép thiết lập các thành phần ngày / giờ:

Mỗi một trong số chúng ngoại trừ setTime () đều có biến thể UTC, ví dụ: setUTCHours () .

Như chúng ta có thể thấy, một số phương pháp có thể đặt nhiều thành phần cùng một lúc, ví dụ: setHours . Các thành phần không được đề cập sẽ không được sửa đổi.

Ví dụ:


  let today = new Date ();

today.setHours (0);
cảnh báo (hôm nay); // vẫn là ngày hôm nay, nhưng giờ được thay đổi thành 0

today.setHours (0, 0, 0, 0);
cảnh báo (hôm nay); // vẫn hôm nay, bây giờ là 00:00:00 sắc nét.  

Tự động sửa là một tính năng rất tiện dụng của các đối tượng Ngày . Chúng tôi có thể đặt các giá trị nằm ngoài phạm vi và nó sẽ tự động điều chỉnh.

Ví dụ:


  let date = new Date (2013, 0, 32); // 32 thg 1, 2013?!?
cảnh báo (ngày tháng); // ... là ngày 1 tháng 2 năm 2013!  

Các thành phần ngày nằm ngoài phạm vi được phân phối tự động.

Giả sử chúng tôi cần tăng ngày “28 tháng 2 năm 2016” lên 2 ngày. Nó có thể là “2 tháng 3” hoặc “1 tháng 3” trong trường hợp là năm nhuận. Chúng tôi không cần phải nghĩ về nó. Chỉ cần thêm 2 ngày. Đối tượng Date sẽ thực hiện phần còn lại:


  let date = new Date (2016, 1, 28);
date.setDate (date.getDate () + 2);

cảnh báo (ngày tháng); // ngày 1 tháng 3 năm 2016  

Tính năng đó thường được sử dụng để lấy ngày sau một khoảng thời gian nhất định. Ví dụ: hãy lấy ngày trong “70 giây sau bây giờ”:


  let date = new Date ();
date.setSeconds (date.getSeconds () + 70);

cảnh báo (ngày tháng); // hiển thị ngày chính xác  

Chúng tôi cũng có thể đặt các giá trị bằng 0 hoặc thậm chí âm. Ví dụ:


  let date = new Date (2016, 0, 2); // ngày 2 tháng 1 năm 2016

date.setDate (1); // đặt ngày 1 trong tháng
cảnh báo (ngày tháng);

date.setDate (0); // ngày tối thiểu là 1, vì vậy ngày cuối cùng của tháng trước được giả định
cảnh báo (ngày tháng); // Ngày 31 tháng 12 năm 2015  

Khi một đối tượng Date được chuyển đổi thành số, nó sẽ trở thành dấu thời gian giống như date.getTime () :


  let date = new Date ();
alert (+ ngày); // số mili giây, giống như date.getTime ()  

Tác dụng phụ quan trọng: ngày có thể được trừ đi, kết quả là sự khác biệt của chúng theo mili giây.

Giá trị đó có thể được sử dụng để đo thời gian:


  let start = new Date (); // bắt đầu đo thời gian

// thực hiện công việc
for (cho i = 0; i & lt; 100000; i ++) {
  let doSomething = i * i * i;
}

let end = new Date (); // kết thúc thời gian đo

alert (`Vòng lặp mất $ {end - start} ms`);  

Nếu chúng ta chỉ muốn đo thời gian, chúng ta không cần đối tượng Date .

Có một phương thức đặc biệt Date.now () trả về dấu thời gian hiện tại.

Về mặt ngữ nghĩa, nó tương đương với new Date (). getTime () , nhưng nó không tạo đối tượng Date trung gian. Vì vậy, nó nhanh hơn và không gây áp lực cho việc thu gom rác.

Nó được sử dụng chủ yếu để thuận tiện hoặc khi hiệu suất quan trọng, chẳng hạn như trong các trò chơi bằng JavaScript hoặc các ứng dụng chuyên biệt khác.

Vì vậy, điều này có lẽ tốt hơn:


  let start = Date.now (); // số mili giây từ ngày 1 tháng 1 năm 1970

// thực hiện công việc
for (cho i = 0; i & lt; 100000; i ++) {
  let doSomething = i * i * i;
}

let end = Date.now (); // xong

alert (`Vòng lặp mất $ {end - start} ms`); // trừ số, không trừ ngày  

Nếu chúng ta muốn có một điểm chuẩn đáng tin cậy cho chức năng sử dụng CPU, chúng ta nên cẩn thận.

Ví dụ: hãy đo lường hai hàm tính toán sự khác biệt giữa hai ngày: cái nào nhanh hơn?

Các phép đo hiệu suất như vậy thường được gọi là "điểm chuẩn".

  // chúng ta có date1 và date2, hàm nào trả về sự khác biệt của chúng theo mili giây nhanh hơn?
function diffSubtract (date1, date2) {
  ngày trở lại2 - date1;
}

// hoặc
function diffGetTime (date1, date2) {
  trả về date2.getTime () - date1.getTime ();
}  

Hai thứ này thực hiện chính xác cùng một việc, nhưng một trong số chúng sử dụng date.getTime () rõ ràng để lấy ngày bằng mili giây và cái kia dựa vào biến đổi ngày thành số . Kết quả của chúng luôn giống nhau.

Vậy, cái nào nhanh hơn?

Ý tưởng đầu tiên có thể là chạy chúng nhiều lần liên tiếp và đo chênh lệch thời gian. Đối với trường hợp của chúng tôi, các hàm rất đơn giản, vì vậy chúng tôi phải thực hiện nó ít nhất 100000 lần.

Hãy đo lường:


  function diffSubtract (date1, date2) {
  ngày trở lại2 - date1;
}

function diffGetTime (date1, date2) {
  trả về date2.getTime () - date1.getTime ();
}

băng ghế chức năng (f) {
  let date1 = new Date (0);
  let date2 = new Date ();

  let start = Date.now ();
  for (let i = 0; i & lt; 100000; i ++) f (date1, date2);
  return Date.now () - bắt đầu;
}

alert ('Thời gian của diffSubtract:' + băng ghế dự bị (diffSubtract) + 'ms');
alert ('Thời gian diffGetTime:' + băng ghế dự bị (diffGetTime) + 'ms');  

Chà! Sử dụng getTime () nhanh hơn rất nhiều! Đó là do không có chuyển đổi loại, nên các công cụ tối ưu hóa dễ dàng hơn nhiều.

Được rồi, chúng tôi có một cái gì đó. Nhưng đó vẫn chưa phải là điểm chuẩn tốt.

Hãy tưởng tượng rằng tại thời điểm chạy băng ghế dự bị (diffSubtract) , CPU đang làm một việc gì đó song song và nó đang sử dụng tài nguyên. Và đến khi chạy băng ghế dự bị (diffGetTime) thì công việc đó đã kết thúc.

Một kịch bản khá thực tế cho một hệ điều hành đa quy trình hiện đại.

Do đó, điểm chuẩn đầu tiên sẽ có ít tài nguyên CPU hơn điểm chuẩn thứ hai. Điều đó có thể dẫn đến kết quả sai.

Để có điểm chuẩn đáng tin cậy hơn, toàn bộ gói điểm chuẩn phải được chạy lại nhiều lần.

Ví dụ: như thế này:


  function diffSubtract (date1, date2) {
  ngày trở lại2 - date1;
}

function diffGetTime (date1, date2) {
  trả về date2.getTime () - date1.getTime ();
}

băng ghế chức năng (f) {
  let date1 = new Date (0);
  let date2 = new Date ();

  let start = Date.now ();
  for (let i = 0; i & lt; 100000; i ++) f (date1, date2);
  return Date.now () - bắt đầu;
}

để time1 = 0;
để time2 = 0;

// chạy băng ghế dự bị (diffSubtract) và băng ghế dự bị (diffGetTime) mỗi 10 lần xen kẽ
for (cho i = 0; i & lt; 10; i ++) {
  time1 + = băng ghế dự bị (diffSubtract);
  time2 + = băng ghế dự bị (diffGetTime);
}

alert ('Tổng thời gian cho diffSubtract:' + time1);
alert ('Tổng thời gian cho diffGetTime:' + time2);  

Các công cụ JavaScript hiện đại chỉ bắt đầu áp dụng các tối ưu hóa nâng cao cho “mã nóng” thực thi nhiều lần (không cần tối ưu hóa những thứ hiếm khi được thực thi). Vì vậy, trong ví dụ trên, các lần thực thi đầu tiên không được tối ưu hóa tốt. Chúng tôi có thể muốn thêm một đợt khởi động:

  // được thêm vào để "làm nóng" trước vòng lặp chính
băng ghế dự bị (diffSubtract);
băng ghế (diffGetTime);

// điểm chuẩn bây giờ
for (cho i = 0; i & lt; 10; i ++) {
  time1 + = băng ghế dự bị (diffSubtract);
  time2 + = băng ghế dự bị (diffGetTime);
}  

Hãy cẩn thận khi thực hiện đánh dấu microbenchmarking

Các công cụ JavaScript hiện đại thực hiện nhiều tối ưu hóa. Họ có thể điều chỉnh kết quả của “kiểm tra nhân tạo” so với “cách sử dụng bình thường”, đặc biệt khi chúng tôi đánh giá một thứ gì đó rất nhỏ, chẳng hạn như cách hoạt động của một nhà điều hành hoặc một chức năng tích hợp. Vì vậy, nếu bạn thực sự muốn hiểu về hiệu suất, thì hãy nghiên cứu cách hoạt động của JavaScript engine. Và sau đó, bạn có thể sẽ không cần dấu vi bàn.

Bạn có thể tìm thấy nhiều bài viết về V8 tại http://mrale.ph .

Phương thức Date.parse (str) có thể đọc ngày tháng từ một chuỗi.

Định dạng chuỗi phải là: YYYY-MM-DDTHH: mm: ss.sssZ , trong đó:

  • YYYY-MM-DD - là ngày: năm-tháng-ngày.
  • Ký tự "T" được sử dụng làm dấu phân tách.
  • HH: mm: ss.sss - là thời gian: giờ, phút, giây và mili giây.
  • Phần 'Z' tùy chọn biểu thị múi giờ ở định dạng + -hh: mm . Một chữ cái duy nhất Z có nghĩa là UTC + 0.

Cũng có thể có các biến thể ngắn hơn, như YYYY-MM-DD hoặc YYYY-MM hoặc thậm chí YYYY .

Lệnh gọi đến Date.parse (str) phân tích cú pháp chuỗi theo định dạng đã cho và trả về dấu thời gian (số mili giây từ ngày 1 tháng 1 năm 1970 UTC + 0). Nếu định dạng không hợp lệ, trả về NaN .

Ví dụ:


  let ms = Date.parse ('2012-01-26T13: 51: 50.417-07: 00');

cảnh báo (ms); // 1327611110417 (dấu thời gian)  

Chúng tôi có thể tạo ngay đối tượng new Date từ dấu thời gian:


  let date = new Date (Date.parse ('2012-01-26T13: 51: 50.417-07: 00'));

cảnh báo (ngày);  
  • Ngày và giờ trong JavaScript được biểu thị bằng đối tượng Ngày . Chúng tôi không thể tạo “chỉ ngày” hoặc “chỉ thời gian”: các đối tượng Ngày luôn mang cả hai.
  • Các tháng được tính từ 0 (vâng, tháng 1 là tháng 0).
  • Các ngày trong tuần trong getDay () cũng được tính từ 0 (đó là Chủ nhật).
  • Ngày tự động sửa khi các thành phần nằm ngoài phạm vi được đặt. Tốt để cộng / trừ ngày / tháng / giờ.
  • Các ngày có thể được trừ đi, tạo ra sự khác biệt của chúng tính bằng mili giây. Đó là vì Ngày trở thành dấu thời gian khi được chuyển đổi thành một số.
  • Sử dụng Date.now () để lấy nhanh dấu thời gian hiện tại.

Lưu ý rằng không giống như nhiều hệ thống khác, dấu thời gian trong JavaScript tính bằng mili giây chứ không phải giây.

Đôi khi, chúng tôi cần các phép đo thời gian chính xác hơn. Bản thân JavaScript không có cách nào để đo thời gian bằng micro giây (1 phần triệu giây), nhưng hầu hết các môi trường đều cung cấp nó. Ví dụ: trình duyệt có performance.now () cung cấp số mili giây kể từ khi bắt đầu tải trang với độ chính xác micro giây (3 chữ số sau dấu chấm):

  alert (`Đã bắt đầu tải $ {performance.now ()} ms trước`);
// Một cái gì đó như: "Đang tải bắt đầu 34731.26000000001ms trước"
// .26 là micro giây (260 micro giây)
// hơn 3 chữ số sau dấu thập phân là lỗi chính xác, chỉ 3 chữ số đầu tiên là đúng  

Node.js có mô-đun microtime và các cách khác. Về mặt kỹ thuật, hầu hết mọi thiết bị và môi trường đều cho phép có độ chính xác cao hơn, điều đó không phải ở Date .


Xem thêm những thông tin liên quan đến chủ đề ngày và giờ js

How to Display Date and Time on Web Page using JavaScript- JavaScript Tutorial

  • Tác giả: nevsky.programming
  • Ngày đăng: 2017-05-09
  • Đánh giá: 4 ⭐ ( 6803 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: In this video we're going to talk how to display date and time on web page using javascript (ecmascript 6).
    JavaScript tutorial.

[Tự học Javascript] Ngày và giờ trong Javascript

  • Tác giả: cafedev.vn
  • Đánh giá: 3 ⭐ ( 6314 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Chúng ta sẽ gặp một đối tượng mới: Date . Nó lưu trữ ngày, giờ và cung cấp các phương thức để quản lý ngày / giờ.

Hiểu Ngày và Giờ trong JavaScript

  • Tác giả: galaxyz.net
  • Đánh giá: 4 ⭐ ( 7092 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Ngày và giờ là một phần thường xuyên trong cuộc sống hàng ngày của ta và do đó có tính năng nổi bật trong lập trình máy tính. Trong JavaScript, bạn có thể phải tạo một trang web có lịch, lịch tàu hoặc giao diện để cài đặt các cuộc hẹn. Các ứng dụng này cần hiển thị thời gian có liên quan dựa trên múi giờ hiện tại của user hoặc thực hiện các phép tính về điểm đến và đi hoặc thời gian bắt đầu và kết thúc. Ngoài ra, bạn có thể cần sử dụng JavaScript để tạo báo cáo vào một thời điểm nhất định hàng ngày hoặc lọc qua các nhà hàng và cơ sở hiện đang mở.

Đối tượng Date và định dạng hiển thị kiểu ngày trong JavaScript - Minh Hoàng Blog

  • Tác giả: minhhn.com
  • Đánh giá: 5 ⭐ ( 8665 lượt đánh giá )
  • Khớp với kết quả tìm kiếm:

Ngày giờ trong JavaScript

  • Tác giả: hanoiict.edu.vn
  • Đánh giá: 3 ⭐ ( 9387 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Trong hướng dẫn tự học Lập trình JavaScript này, bạn sẽ học cách làm việc với ngày và giờ trong JavaScript (Date time) với các ví dụ chi tiết, cụ thể.

So sánh 2 ngày trong javascript

  • Tác giả: anonystick.com
  • Đánh giá: 4 ⭐ ( 5384 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: So sánh 2 ngày trong javascript, đây là một bài viết nhỏ nhỏ và để tôi kể cho các anh chị nghe một tình huống về một bạn cũng có exp 1 năm rồi, chú ý bài viết chỉ tips khắc phục không có ý định cười. Vì tôi cũng một thời như thế

Giới thiệu về Ngày và Giờ trong JavaScript

  • Tác giả: funix.edu.vn
  • Đánh giá: 5 ⭐ ( 6420 lượt đánh giá )
  • Khớp với kết quả tìm kiếm: Đối tượng date (ngày tháng) có sẵn được dùng để làm việc với ngày tháng và thời gian trong JavaScript. Các phương thức khác nhau của đối tượng date làm cho tác vụ này dễ dàng hơn rất nhiều. Trong bài viết này, bạn sẽ tìm hiểu mọi thứ bạn cần biết về cách làm việc với ngày và giờ trong JavaScript.

Xem thêm các bài viết khác thuộc chuyên mục: Kiến thức lập trình

Xem Thêm  Java StringReader (Có ví dụ) - cách đọc chuỗi trong java