Ngày javascript có sử dụng thời gian hệ thống không?

JavaScript là ngôn ngữ lập trình nhẹ được sử dụng cho World Wide Web. Đối tượng JavaScript

let currentDate = new Date[];
let someDate = new Date['December 12, 2020 18:30:01'];
let someDate = new Date['2021-12-12T18:30:01'];
let someDate = new Date[2021, 11, 12, 18, 30, 1]; // Month's index is zero-based
let someDate = new Date[1639326601000]; // Number of milliseconds from Jan 1, 1970 00:00:00 UTC
1 rất hữu ích để kiểm tra ngày giờ khách truy cập vào trang web của bạn

Hướng dẫn này sẽ hướng dẫn bạn cách sử dụng JavaScript để lấy ngày và giờ hiện tại từ ứng dụng khách

điều kiện tiên quyết

  • Quen thuộc với JavaScript [bao gồm tạo, lưu và chạy tập lệnh]
  • Một trình soạn thảo văn bản để viết kịch bản
  • Truy cập vào trình duyệt để mở tệp HTML

Tạo đối tượng ngày trong JavaScript

Đối tượng JavaScript

let currentDate = new Date[];
let someDate = new Date['December 12, 2020 18:30:01'];
let someDate = new Date['2021-12-12T18:30:01'];
let someDate = new Date[2021, 11, 12, 18, 30, 1]; // Month's index is zero-based
let someDate = new Date[1639326601000]; // Number of milliseconds from Jan 1, 1970 00:00:00 UTC
2 trợ giúp khi làm việc với ngày tháng. Để tạo một đối tượng mới với ngày và giờ hiện tại, hãy thêm đối tượng vào tập lệnh của bạn





Demo: Current Date



Lưu mã vào một. html và mở bằng trình duyệt của bạn

Đối tượng hiển thị ngày, giờ và múi giờ hiện tại

Dưới đây là các phương pháp để lấy các phần tử ngày và giờ riêng lẻ

Sử dụng phương thức Get để hiển thị ngày hiện tại trong JavaScript

Nếu bạn muốn lấy ngày ở định dạng YYYY-MM-DD, hãy tạo một tài liệu HTML và thêm đoạn mã sau





Demo: Current Date



Dòng thứ hai trong tập lệnh bao gồm các hướng dẫn sau

  • let currentDate = new Date[];
    let someDate = new Date['December 12, 2020 18:30:01'];
    let someDate = new Date['2021-12-12T18:30:01'];
    let someDate = new Date[2021, 11, 12, 18, 30, 1]; // Month's index is zero-based
    let someDate = new Date[1639326601000]; // Number of milliseconds from Jan 1, 1970 00:00:00 UTC
    3 – Sử dụng biến hôm nay để hiển thị năm có 4 chữ số
  • let currentDate = new Date[];
    let someDate = new Date['December 12, 2020 18:30:01'];
    let someDate = new Date['2021-12-12T18:30:01'];
    let someDate = new Date[2021, 11, 12, 18, 30, 1]; // Month's index is zero-based
    let someDate = new Date[1639326601000]; // Number of milliseconds from Jan 1, 1970 00:00:00 UTC
    4 – Hiển thị tháng số. +1 chuyển đổi tháng từ kỹ thuật số [0-11] sang bình thường
  • let currentDate = new Date[];
    let someDate = new Date['December 12, 2020 18:30:01'];
    let someDate = new Date['2021-12-12T18:30:01'];
    let someDate = new Date[2021, 11, 12, 18, 30, 1]; // Month's index is zero-based
    let someDate = new Date[1639326601000]; // Number of milliseconds from Jan 1, 1970 00:00:00 UTC
    5 – Hiển thị số ngày trong tháng

Nếu bạn thích một định dạng khác, chỉ cần thay đổi thứ tự của các lệnh

Ghi chú. Có một dấu gạch ngang giữa mỗi lệnh. Điều này tạo ra một dấu gạch ngang giữa mỗi phân đoạn của ngày

Hiển thị Giờ, Phút và Giây bằng JavaScript

Để hiển thị thời gian trong HH. MM. Định dạng SS, chỉnh sửa tập lệnh của bạn để trông như sau





Demo: Current Date



  • let currentDate = new Date[];
    let someDate = new Date['December 12, 2020 18:30:01'];
    let someDate = new Date['2021-12-12T18:30:01'];
    let someDate = new Date[2021, 11, 12, 18, 30, 1]; // Month's index is zero-based
    let someDate = new Date[1639326601000]; // Number of milliseconds from Jan 1, 1970 00:00:00 UTC
    6 – Điều này sử dụng biến hôm nay để hiển thị giờ hiện tại. Cái này sử dụng đồng hồ 24 giờ
  • 
    
    
    
    Demo: Current Date
    
    
    
    
    0 – Hiển thị số phút hiện tại
  • 
    
    
    
    Demo: Current Date
    
    
    
    
    1 – Hiển thị số giây hiện tại

Ghi chú. Có dấu hai chấm giữa mỗi câu lệnh. Điều này đặt một dấu hai chấm giữa mỗi màn hình số để nó đọc giống như một chiếc đồng hồ

Hiển thị đầy đủ ngày và giờ hiện tại trong JavaScript

Kết hợp hai lệnh để hiển thị đầy đủ ngày và giờ trong YYYY-MM-DD và HH. MM. định dạng SS. Chỉnh sửa kịch bản của bạn như sau





Demo: Current Date



Dòng cuối cùng kết hợp hai đoạn mã khác. Điều này hướng dẫn hệ thống hiển thị ngày đầy đủ bên cạnh toàn thời gian

Phần kết luận

Bây giờ bạn có thể viết một đoạn JavaScript đơn giản để truy xuất ngày giờ hiện tại. Điều này có thể hữu ích để tạo dấu thời gian, bằng cách liên kết tập lệnh này với một hành động và ghi nó vào tệp nhật ký

Câu hỏi – Làm cách nào để lấy ngày và giờ hiện tại trong JavaScript? . i. s trong JavaScript?

Thời gian là một phần quan trọng trong cuộc sống của chúng ta và chúng ta không thể trốn tránh nó. Trong thói quen hàng ngày của chúng tôi, chúng tôi cần phải biết ngày hoặc thời gian hiện tại thường xuyên. JavaScript cung cấp một biến toàn cục Ngày giúp bạn lấy Ngày & Giờ hiện tại trong JavaScript. Tuy nhiên, nó sẽ không cung cấp cho bạn thông tin chính xác và trả về thời gian máy tính cục bộ thay vì thời gian UTC. Để có được Ngày & Giờ chính xác trong JavaScript, bạn cần sử dụng các API khác nhau do chính JavaScript cung cấp. Bạn cũng có thể lấy ngày và giờ ở các định dạng như YYYY-MM-DD và HH. MM. định dạng SS

Bài viết này giải thích tất cả về cách lấy Ngày & Giờ hiện tại trong JavaScript với các ví dụ và phương pháp hay nhất

Nhận ngày và giờ hiện tại trong JavaScript

Sử dụng hàm

let currentDate = new Date[];
let someDate = new Date['December 12, 2020 18:30:01'];
let someDate = new Date['2021-12-12T18:30:01'];
let someDate = new Date[2021, 11, 12, 18, 30, 1]; // Month's index is zero-based
let someDate = new Date[1639326601000]; // Number of milliseconds from Jan 1, 1970 00:00:00 UTC
2 để tạo một đối tượng trong JavaScript với ngày giờ hiện tại. Điều này cung cấp đầu ra trong múi giờ UTC

1

var hôm nay = mới Ngày[];  

1. Ngày hiện tại trong JavaScript

Sử dụng tập lệnh sau để lấy ngày và giờ hiện tại bằng JavaScript trong phần “Y-m-d H. i. định dạng s. Bạn có thể chỉ cần kết hợp đầu ra của mã JavaScript ở trên trong một biến như bên dưới

Thời gian đóng một vai trò thiết yếu trong cuộc sống của chúng ta. Do đó, với tư cách là nhà phát triển, chúng tôi phải làm việc với ngày và giờ khá thường xuyên. Phần mềm máy tính được sử dụng bởi mọi người từ mọi nơi trên thế giới và thời gian ở một khu vực có thể khác với thời gian ở khu vực khác. Và, nói chung, trong phần mềm chúng tôi xây dựng, chúng tôi nắm bắt và xử lý ngày và giờ của các sự kiện và bản ghi dữ liệu khác nhau. Do đó, điều quan trọng là phải hiểu các sắc thái khác nhau khi làm việc với ngày và giờ

Ngày và thời gian có thể được biểu diễn ở nhiều định dạng khác nhau. Ở Ukraine, ngày thường được viết theo định dạng "DD-MM-YYYY" [ngày đầu tiên], trong khi ở Hoa Kỳ, định dạng phổ biến là "MM-DD-YYYY" [tháng đầu tiên]

Tùy thuộc vào khu vực địa lý hoặc một đơn vị chính trị [đ. g. , một quốc gia], múi giờ có thể khác nhau. Ví dụ, vào mùa hè, trong khi ở Kiev, thời gian là 21. 00, ở New York thời gian là 14. 00 [trừ bảy giờ]. Ngoài ra, điều quan trọng cần đề cập là lựa chọn/định nghĩa múi giờ ở một quốc gia/khu vực cụ thể có thể bị ảnh hưởng bởi một quyết định chính trị. Một quốc gia có thể chọn độ lệch UTC khác với vị trí địa lý thực tế của quốc gia đó Độ lệch UTC

Tất cả các múi giờ được xác định là phần bù cho Giờ phối hợp quốc tế [UTC], nằm trong khoảng từ UTC-12. 00 đến UTC+14. 00. Điểm tham chiếu địa lý cho UTC là kinh tuyến gốc [kinh độ = 0°], chạy qua Đài thiên văn Hoàng gia ở Greenwich, London, Vương quốc Anh

Ngoài ra, ở các khu vực khác nhau trên thế giới, mọi người thực hành Giờ tiết kiệm ánh sáng ban ngày [DST] hay nói cách khác - giờ mùa hè. Đây là cách quay đồng hồ về phía trước một giờ so với giờ tiêu chuẩn trong những tháng ấm hơn để có nhiều ánh sáng ban ngày hơn trong những giờ chúng ta thường thức. Ví dụ: ở Ukraine, chúng tôi quay đồng hồ về phía trước một giờ vào Chủ nhật cuối cùng của tháng 3 lúc 03. 00 và chúng tôi quay trở lại thời gian tiêu chuẩn [quay ngược đồng hồ một giờ] vào Chủ nhật cuối cùng của tháng 10 lúc 04. 00. Ngày và giờ DST bắt đầu và kết thúc tùy thuộc vào một quốc gia hoặc một đơn vị chính trị [e. g. , Liên minh châu Âu. ]

Ngoài ra, độ lệch múi giờ của khu vực chính trị và/hoặc ngày và giờ khi DST bắt đầu và kết thúc có thể đã bị thay đổi tại một số thời điểm trong lịch sử. Do đó, có một số cơ sở dữ liệu theo dõi thông tin về sự thay đổi múi giờ. Phổ biến nhất là IANA - Cơ sở dữ liệu múi giờ, còn được gọi là tz hoặc zoneinfo. Hệ điều hành và phần mềm máy tính khác sử dụng các cơ sở dữ liệu này để xử lý và chuyển đổi múi giờ

Một định dạng phổ biến để biểu thị các giá trị ngày và giờ trong lập trình máy tính là dấu thời gian Unix, là một số giây giữa kỷ nguyên Unix [1 tháng 1 năm 1970 00. 00. 00 UTC] và một ngày khác [e. g. , 1620758838]. Các số nguyên dương biểu thị các ngày sau kỷ nguyên Unix, trong khi các số nguyên âm biểu thị các ngày trước kỷ nguyên Unix

Dấu thời gian Unix là một trong những định dạng phổ biến để lưu trữ ngày và giờ trong hệ điều hành và cơ sở dữ liệu

Tìm hiểu thêm về dấu thời gian Unix trên Wikipedia. thời gian Unix

Về cơ bản, ngày JavaScript được chỉ định là số mili giây kể từ ngày 1 tháng 1 năm 1970 00. 00. 00 UTC. Con số này trông tương tự như dấu thời gian Unix. Sự khác biệt là dấu thời gian Unix là số giây kể từ kỷ nguyên Unix trong khi ở JavaScript, đó là số mili giây

Trong JavaScript, chúng tôi sử dụng đối tượng Ngày để làm việc với ngày và giờ

const date = new Date[];

Đối tượng Date giữ ngày và giờ hiện tại theo UTC trong nội bộ. Tuy nhiên, theo mặc định, khi chúng ta xuất ngày và giờ, đối tượng Date sẽ chuyển đổi kết quả đầu ra thành múi giờ địa phương, múi giờ của môi trường nơi mã JavaScript đang chạy [e. g. , một trình duyệt, Nút. js, v.v. ]

Khi được khởi tạo mà không có tham số, đối tượng ngày sẽ giữ ngày và giờ hiện tại [

const myDate = new Date['11 May 2021 18:30:01 UTC'];

console.log[myDate];
// Tue May 11 2021 21:30:01 GMT+0300 [Eastern European Summer Time]

console.log[myDate.getHours[]];
// 21, not 18 as you might have expected
3 giữ ngày hiện tại]

Chúng ta có thể đặt ngày và giờ trong hàm tạo của Ngày hoặc sau khi khởi tạo

________số 8

Khi chúng tôi khởi tạo lớp Ngày, ngày đã chỉ định sẽ được chuyển đổi thành và theo dõi trong nội bộ UTC. Tuy nhiên, khi chúng ta truy cập ngày bằng các phương thức cơ bản [e. g. ,

const myDate = new Date['11 May 2021 18:30:01 UTC'];

console.log[myDate];
// Tue May 11 2021 21:30:01 GMT+0300 [Eastern European Summer Time]

console.log[myDate.getHours[]];
// 21, not 18 as you might have expected
4,
const myDate = new Date['11 May 2021 18:30:01 UTC'];

console.log[myDate];
// Tue May 11 2021 21:30:01 GMT+0300 [Eastern European Summer Time]

console.log[myDate.getHours[]];
// 21, not 18 as you might have expected
5,
const myDate = new Date['11 May 2021 18:30:01 UTC'];

console.log[myDate];
// Tue May 11 2021 21:30:01 GMT+0300 [Eastern European Summer Time]

console.log[myDate.getHours[]];
// 21, not 18 as you might have expected
6, v.v.] ngày được trả về theo múi giờ địa phương

const myDate = new Date['11 May 2021 18:30:01 UTC'];

console.log[myDate];
// Tue May 11 2021 21:30:01 GMT+0300 [Eastern European Summer Time]

console.log[myDate.getHours[]];
// 21, not 18 as you might have expected

Ở đây, chúng tôi khởi tạo lớp Ngày chỉ định ngày theo UTC, nhưng khi chúng tôi in đối tượng ngày đã khởi tạo, chúng tôi nhận được ngày theo múi giờ địa phương, đối với tôi là UTC+03. 00 [Giờ mùa hè Đông Âu]. Vì vậy, ngày được lưu trữ nội bộ theo UTC, nhưng khi chúng tôi truy cập ngày bằng các phương thức cơ bản, nó sẽ được chuyển đổi thành múi giờ địa phương

Các phương thức phổ biến nhất của đối tượng Date là





Demo: Current Date



3

Tìm hiểu thêm về đối tượng Ngày trên MDN Web Docs. Ngày tháng





Demo: Current Date



4

Ở đây, chúng tôi tạo hai đối tượng ngày, 11 tháng 5 năm 2021 và 12 tháng 5 năm 2021. Sau đó, chúng tôi trừ ngày 11 tháng 5 năm 2021 [

const myDate = new Date['11 May 2021 18:30:01 UTC'];

console.log[myDate];
// Tue May 11 2021 21:30:01 GMT+0300 [Eastern European Summer Time]

console.log[myDate.getHours[]];
// 21, not 18 as you might have expected
7] từ ngày 12 tháng 5 năm 2021 [
const myDate = new Date['11 May 2021 18:30:01 UTC'];

console.log[myDate];
// Tue May 11 2021 21:30:01 GMT+0300 [Eastern European Summer Time]

console.log[myDate.getHours[]];
// 21, not 18 as you might have expected
8] và nhận được 24 giờ chênh lệch

Khi bạn làm việc với các đối tượng ngày, hãy tính đến các múi giờ mà các đối tượng ngày này được khởi tạo với. Kiểm tra một ví dụ khác





Demo: Current Date



7

Ở đây, câu trả lời là -2, vì múi giờ của

const myDate = new Date['11 May 2021 18:30:01 UTC'];

console.log[myDate];
// Tue May 11 2021 21:30:01 GMT+0300 [Eastern European Summer Time]

console.log[myDate.getHours[]];
// 21, not 18 as you might have expected
7 là UTC trong khi múi giờ của
const myDate = new Date['11 May 2021 18:30:01 UTC'];

console.log[myDate];
// Tue May 11 2021 21:30:01 GMT+0300 [Eastern European Summer Time]

console.log[myDate.getHours[]];
// 21, not 18 as you might have expected
8 là UTC+3. Hãy xem những gì xảy ra chi tiết hơn

  1. Chúng tôi đặt
    const myDate = new Date['11 May 2021 18:30:01 UTC'];
    
    console.log[myDate];
    // Tue May 11 2021 21:30:01 GMT+0300 [Eastern European Summer Time]
    
    console.log[myDate.getHours[]];
    // 21, not 18 as you might have expected
    7 thành ngày 12 tháng 5 năm 2021 00. 00. 00 UTC sử dụng định dạng ISO 8601. Chúng tôi chỉ định múi giờ UTC bằng ký tự Z. Chúng tôi cũng có thể chỉ định múi giờ bằng cách sử dụng phần bù, như thế này. 2021-05-12T00. 00. 00. 000+00. 00 [+00. 00 là UTC]
  2. Chúng tôi đặt
    const myDate = new Date['11 May 2021 18:30:01 UTC'];
    
    console.log[myDate];
    // Tue May 11 2021 21:30:01 GMT+0300 [Eastern European Summer Time]
    
    console.log[myDate.getHours[]];
    // 21, not 18 as you might have expected
    8 đến ngày 12 tháng 5 năm 2021 01. 00. 00 sử dụng định dạng ngày và giờ khác với độ lệch múi giờ UTC+3 [hoặc UTC+03. 00]
  3. Sau đó, chúng tôi trừ date1 từ date2 [______133]. Khi chúng ta sử dụng một phép toán trên một đối tượng, JavaScript sẽ chuyển đổi đối tượng thành một số bằng cách sử dụng phương thức valueOf[] của đối tượng nếu nó hiện diện. Trong trường hợp của đối tượng Date, phương thức
    
    
    
    
    Demo: Current Date
    
    
    
    
    34 trả về ngày và giờ dưới dạng số mili giây kể từ Kỷ nguyên Unix, là biểu diễn ngày và giờ dựa trên UTC. Vì vậy,
    const myDate = new Date['11 May 2021 18:30:01 UTC'];
    
    console.log[myDate];
    // Tue May 11 2021 21:30:01 GMT+0300 [Eastern European Summer Time]
    
    console.log[myDate.getHours[]];
    // 21, not 18 as you might have expected
    7 đã được đặt ở UTC, trong khi
    const myDate = new Date['11 May 2021 18:30:01 UTC'];
    
    console.log[myDate];
    // Tue May 11 2021 21:30:01 GMT+0300 [Eastern European Summer Time]
    
    console.log[myDate.getHours[]];
    // 21, not 18 as you might have expected
    8 đã được chuyển thành UTC từ UTC+3. Vì vậy, trên thực tế, chúng tôi trừ ngày 12 tháng 5 năm 2021 01. 00. 00 UTC [
    const myDate = new Date['11 May 2021 18:30:01 UTC'];
    
    console.log[myDate];
    // Tue May 11 2021 21:30:01 GMT+0300 [Eastern European Summer Time]
    
    console.log[myDate.getHours[]];
    // 21, not 18 as you might have expected
    7] từ ngày 11 tháng 5 năm 2021 22. 00. 00 UTC [
    const myDate = new Date['11 May 2021 18:30:01 UTC'];
    
    console.log[myDate];
    // Tue May 11 2021 21:30:01 GMT+0300 [Eastern European Summer Time]
    
    console.log[myDate.getHours[]];
    // 21, not 18 as you might have expected
    8] và đó là cách chúng tôi nhận được -2 cho kết quả

Một cách để định dạng ngày là sử dụng các hàm getter như getFullYear, getMonth, getDate, v.v. Ví dụ: để tạo chuỗi ngày và giờ theo giờ địa phương ở định dạng 'YYYY-MM-DD hh. mm. ss' chúng ta có thể làm như sau





Demo: Current Date



8

Để lấy giá trị ngày và giờ theo UTC, chúng ta có thể sử dụng các hàm getter dựa trên UTC như getUTCFullYear, getUTCMonth, getUTCDate, v.v.

Hơn nữa, chúng ta có thể lấy chuỗi ngày và giờ từ đối tượng Date được định dạng theo một ngôn ngữ nhất định và các tùy chọn khác nhau bằng cách sử dụng phương thức

const myDate = new Date['11 May 2021 18:30:01 UTC'];

console.log[myDate];
// Tue May 11 2021 21:30:01 GMT+0300 [Eastern European Summer Time]

console.log[myDate.getHours[]];
// 21, not 18 as you might have expected
5 của Date





Demo: Current Date



0

Xin lưu ý rằng nếu bạn không chỉ định múi giờ trong các tùy chọn,

const myDate = new Date['11 May 2021 18:30:01 UTC'];

console.log[myDate];
// Tue May 11 2021 21:30:01 GMT+0300 [Eastern European Summer Time]

console.log[myDate.getHours[]];
// 21, not 18 as you might have expected
5 sẽ xuất ngày theo múi giờ địa phương





Demo: Current Date



2

Đầu tiên, chúng tôi khởi tạo đối tượng Ngày với múi giờ địa phương và lấy chuỗi ngày và giờ được bản địa hóa. Khi Ngày được bắt đầu, giá trị ngày và giờ được chuyển đổi nội bộ từ múi giờ đã chỉ định [hoặc múi giờ địa phương nếu múi giờ không được chỉ định] sang UTC

Sau đó, chúng tôi khởi tạo một đối tượng Ngày khác với múi giờ địa phương. Lần này, chúng tôi đặt tùy chọn





Demo: Current Date



41 thành "Châu Âu/Amsterdam" [theo Cơ sở dữ liệu múi giờ IANA]. Do đó, chúng tôi nhận được chuỗi ngày và giờ được bản địa hóa dựa trên múi giờ "Châu Âu/Amsterdam". Chi tiết hơn. múi giờ hiện tại của tôi là UTC+3, vì vậy đối tượng Ngày được khởi tạo với ngày và giờ 2021-05-16 00. 00. 00 UTC+3 được chuyển đổi thành UTC nội bộ và trở thành 2021-05-15 21. 00. 00. Sau đó, phương thức
const myDate = new Date['11 May 2021 18:30:01 UTC'];

console.log[myDate];
// Tue May 11 2021 21:30:01 GMT+0300 [Eastern European Summer Time]

console.log[myDate.getHours[]];
// 21, not 18 as you might have expected
5 chuyển đổi ngày này từ UTC thành "Europe/Amsterdam" và kết quả là 15/5/2021, 11. 00. 00 giờ chiều GMT+2. Độ lệch kết quả là +2, bởi vì đó là độ lệch Giờ tiết kiệm ánh sáng ban ngày của múi giờ "Châu Âu/Amsterdam"

Thông thường, phần mềm máy tính [e. g. , Nút. js, cơ sở dữ liệu, v.v.] theo mặc định sử dụng cấu hình ngày và giờ của hệ thống. Do đó, hãy đảm bảo rằng tất cả các máy chủ thuộc về ứng dụng của bạn đều sử dụng cùng một múi giờ. UTC thường được sử dụng

Trong Linux, bạn có thể kiểm tra múi giờ bằng một trong các lệnh sau





Demo: Current Date



5

Để thay đổi múi giờ hệ thống, bạn có thể sử dụng các lệnh sau

let currentDate = new Date[];
let someDate = new Date['December 12, 2020 18:30:01'];
let someDate = new Date['2021-12-12T18:30:01'];
let someDate = new Date[2021, 11, 12, 18, 30, 1]; // Month's index is zero-based
let someDate = new Date[1639326601000]; // Number of milliseconds from Jan 1, 1970 00:00:00 UTC
0

Để kiểm tra múi giờ của Node. quy trình js

let currentDate = new Date[];
let someDate = new Date['December 12, 2020 18:30:01'];
let someDate = new Date['2021-12-12T18:30:01'];
let someDate = new Date[2021, 11, 12, 18, 30, 1]; // Month's index is zero-based
let someDate = new Date[1639326601000]; // Number of milliseconds from Jan 1, 1970 00:00:00 UTC
1

trong nút. js, bạn có thể đặt múi giờ bằng biến môi trường





Demo: Current Date



43

let currentDate = new Date[];
let someDate = new Date['December 12, 2020 18:30:01'];
let someDate = new Date['2021-12-12T18:30:01'];
let someDate = new Date[2021, 11, 12, 18, 30, 1]; // Month's index is zero-based
let someDate = new Date[1639326601000]; // Number of milliseconds from Jan 1, 1970 00:00:00 UTC
2

Nếu biến





Demo: Current Date



43 không được đặt, Nút. js sẽ cố gắng sử dụng múi giờ của hệ điều hành

Thông thường, các ứng dụng web có sẵn từ mọi nơi trên thế giới. Điều này có nghĩa là nếu chúng tôi lưu trữ ngày trong cơ sở dữ liệu, chúng tôi cần đảm bảo rằng chúng tôi lưu trữ tất cả các ngày trong một múi giờ [nhất quán] hoặc ít nhất là theo dõi múi giờ của ngày mà chúng tôi lưu trữ. Các cơ sở dữ liệu khác nhau có các chi tiết cụ thể về cách chúng xử lý các giá trị ngày và giờ. Vì vậy, trong phần này, tôi muốn giải thích ngắn gọn cách lưu trữ các giá trị ngày và giờ trong các cơ sở dữ liệu khác nhau và đề cập đến một số chi tiết cụ thể đó

Thông thường, phần mềm [đặc biệt là ứng dụng web] phục vụ người dùng từ khắp nơi trên thế giới. Giờ địa phương của mỗi người dùng phụ thuộc vào vị trí của họ. Ví dụ: đối với người dùng từ Kiev, giờ địa phương vào mùa hè là 17. 00 và đồng thời đối với người dùng ở Amsterdam, giờ địa phương là 16. 00

Về cơ bản, chúng ta nên chuyển đổi và lưu trữ ngày tháng trong một múi giờ thống nhất; . Vì vậy, trước khi lưu trữ một ngày, chúng ta nên chuyển đổi nó từ giờ địa phương sang UTC. Ví dụ: người dùng từ Amsterdam tạo lời nhắc trong ứng dụng lịch. Người dùng chọn ngày giờ nhắc nhở theo giờ địa phương [múi giờ "Châu Âu/Amsterdam" - UTC+01. 00 giờ chuẩn và UTC+02. 00 DST]. Giả sử người dùng đặt ngày nhắc nhở là ngày 12 tháng 5 năm 2021 17. 00 sử dụng tiện ích lịch. Bây giờ, trước khi chúng tôi lưu trữ ngày này trong cơ sở dữ liệu, chúng tôi nên chuyển đổi nó thành UTC và ngày sẽ trở thành. 12 Tháng năm 2021 15. 00 theo giờ UTC, vì Giờ mùa hè ở Amsterdam [UTC+02. 00] bắt đầu hoạt động vào ngày 28 tháng 3 năm 2021 lúc 02. 00. 00. May mắn thay, chúng ta thường không phải xử lý logic chuyển đổi múi giờ, vì nó thường được tích hợp sẵn trong ngôn ngữ lập trình và phần mềm [e. g. , một cơ sở dữ liệu] chúng tôi sử dụng. Ví dụ: trong JavaScript, chúng ta có thể lấy ngày và giờ hiện tại theo UTC bằng cách sử dụng đối tượng Date

let currentDate = new Date[];
let someDate = new Date['December 12, 2020 18:30:01'];
let someDate = new Date['2021-12-12T18:30:01'];
let someDate = new Date[2021, 11, 12, 18, 30, 1]; // Month's index is zero-based
let someDate = new Date[1639326601000]; // Number of milliseconds from Jan 1, 1970 00:00:00 UTC
3

mysql

Trong MySQL, ngày thường được lưu trữ bằng cách sử dụng các loại cột





Demo: Current Date



45 và




Demo: Current Date



46

DẤU THỜI GIAN của MySQL

MySQL chuyển đổi giá trị





Demo: Current Date



46 từ múi giờ hiện tại [e. g. , múi giờ toàn cầu hoặc múi giờ phiên máy khách] sang UTC để lưu trữ và quay lại từ UTC về múi giờ hiện tại để truy xuất. MySQL không làm điều này với các loại cột khác, như




Demo: Current Date



45. Vì vậy, các giá trị




Demo: Current Date



46 được chuyển đổi thành UTC để lưu trữ, nhưng khi chúng được truy xuất, chúng được chuyển đổi thành múi giờ hiện tại [_______170]. Vui lòng kiểm tra ví dụ này

let currentDate = new Date[];
let someDate = new Date['December 12, 2020 18:30:01'];
let someDate = new Date['2021-12-12T18:30:01'];
let someDate = new Date[2021, 11, 12, 18, 30, 1]; // Month's index is zero-based
let someDate = new Date[1639326601000]; // Number of milliseconds from Jan 1, 1970 00:00:00 UTC
4

Kể từ MySQL 8. 0. 19 chúng ta có thể thêm phần bù múi giờ khi chèn các giá trị





Demo: Current Date



46 và




Demo: Current Date



45 vào bảng

let currentDate = new Date[];
let someDate = new Date['December 12, 2020 18:30:01'];
let someDate = new Date['2021-12-12T18:30:01'];
let someDate = new Date[2021, 11, 12, 18, 30, 1]; // Month's index is zero-based
let someDate = new Date[1639326601000]; // Number of milliseconds from Jan 1, 1970 00:00:00 UTC
5

Hãy xem điều gì xảy ra trong ví dụ này

  1. Chúng tôi đặt múi giờ hiện tại thành UTC+2
  2. Chúng tôi chèn một giá trị ngày với độ lệch múi giờ UTC-1. 2021-05-12 21. 00. 00-01. 00. MySQL chuyển đổi giá trị ngày và giờ này từ UTC-1 thành UTC để lưu trữ. 2021-05-12 22. 00. 00
  3. Chúng tôi chọn các hàng từ bảng của mình và MySQL chuyển đổi các giá trị
    
    
    
    
    Demo: Current Date
    
    
    
    
    46 từ UTC sang múi giờ hiện tại [UTC+2] khi truy xuất. 2021-05-13 00. 00. 00
  4. Sau đó, chúng tôi đặt múi giờ thành UTC+3 và chọn lại các hàng và vì MySQL chuyển đổi các giá trị
    
    
    
    
    Demo: Current Date
    
    
    
    
    46 từ UTC sang múi giờ hiện tại khi truy xuất, nên lần này chúng tôi nhận được ngày mà chúng tôi đã chèn trước đó vào UTC+3. 2021-05-13 01. 00. 00

Loại





Demo: Current Date



46 có phạm vi 1970-01-01 00. 00. 01 UTC đến 2038-01-19 03. 14. 07 UTC

MySQL DATETIME

MySQL





Demo: Current Date



45 được lưu trữ và truy xuất nguyên trạng

let currentDate = new Date[];
let someDate = new Date['December 12, 2020 18:30:01'];
let someDate = new Date['2021-12-12T18:30:01'];
let someDate = new Date[2021, 11, 12, 18, 30, 1]; // Month's index is zero-based
let someDate = new Date[1639326601000]; // Number of milliseconds from Jan 1, 1970 00:00:00 UTC
6

MySQL không chuyển đổi giá trị





Demo: Current Date



45 từ múi giờ hiện tại sang UTC và ngược lại

Tuy nhiên, một điều thú vị xảy ra khi chúng ta chèn một giá trị





Demo: Current Date



45 với phần bù múi giờ

let currentDate = new Date[];
let someDate = new Date['December 12, 2020 18:30:01'];
let someDate = new Date['2021-12-12T18:30:01'];
let someDate = new Date[2021, 11, 12, 18, 30, 1]; // Month's index is zero-based
let someDate = new Date[1639326601000]; // Number of milliseconds from Jan 1, 1970 00:00:00 UTC
7

Trong ví dụ trên, chúng ta có thể thấy rằng khi chúng ta chèn một giá trị





Demo: Current Date



45 với phần bù múi giờ, MySQL sẽ chuyển đổi giá trị ngày này thành múi giờ hiện tại để lưu trữ. 2021-05-12 21. 00. 00+00. 00 + độ lệch múi giờ hiện tại [+03. 00] = 2021-05-13 00. 00. 00

Loại





Demo: Current Date



45 có phạm vi 1000-01-01 00. 00. 00 đến 9999-12-31 23. 59. 59

Để lưu trữ giá trị ngày và giờ, tôi sẽ chuyển đổi giá trị ngày và giờ cục bộ thành UTC trong mã ứng dụng và lưu trữ giá trị này trong cột DATETIME. Về cơ bản, tôi sẽ xử lý chuyển đổi múi giờ ở phía ứng dụng và lưu trữ tất cả các ngày trong UTC. Tôi sẽ sử dụng DATETIME thay vì DẤU THỜI GIAN, vì DẤU THỜI GIAN thực sự là một số nguyên 32 bit và không cho phép lưu trữ ngày sau 2038-01-19 03. 14. 07 UTC, trong khi DATETIME cho phép chúng tôi lưu trữ ngày lên tới 9999-12-31 23. 59. 59. 999999

PostgreSQL

Trong PostgreSQL, chúng tôi thường lưu trữ các giá trị ngày và giờ bằng cách sử dụng các loại cột





Demo: Current Date



81 [hoặc đơn giản là




Demo: Current Date



82] hoặc




Demo: Current Date



83 [hoặc đơn giản là




Demo: Current Date



84]. Cả hai loại đều có phạm vi từ 4713 trước Công nguyên đến 294276 sau Công nguyên

Dấu thời gian PostgreSQL không có múi giờ

Các giá trị





Demo: Current Date



81 được lưu trữ và truy xuất nguyên trạng

let currentDate = new Date[];
let someDate = new Date['December 12, 2020 18:30:01'];
let someDate = new Date['2021-12-12T18:30:01'];
let someDate = new Date[2021, 11, 12, 18, 30, 1]; // Month's index is zero-based
let someDate = new Date[1639326601000]; // Number of milliseconds from Jan 1, 1970 00:00:00 UTC
8

Trong ví dụ này, chúng tôi tạo một cột





Demo: Current Date



81 được gọi là created_at. Và, chúng ta có thể thấy rõ rằng giá trị ngày và giờ được lưu trữ và truy xuất từ ​​cột này. Nếu chúng tôi chỉ định múi giờ, múi giờ sẽ bị bỏ qua

Dấu thời gian PostgreSQL với múi giờ

Các giá trị





Demo: Current Date



83 [




Demo: Current Date



84] được chuyển đổi từ múi giờ đã chỉ định sang UTC. Nếu bạn không chỉ định múi giờ khi chèn giá trị




Demo: Current Date



84, PostgreSQL sẽ cho rằng giá trị ngày này dựa trên múi giờ hiện tại [




Demo: Current Date



00]

let currentDate = new Date[];
let someDate = new Date['December 12, 2020 18:30:01'];
let someDate = new Date['2021-12-12T18:30:01'];
let someDate = new Date[2021, 11, 12, 18, 30, 1]; // Month's index is zero-based
let someDate = new Date[1639326601000]; // Number of milliseconds from Jan 1, 1970 00:00:00 UTC
9

Điều xảy ra trong ví dụ này là như sau

  1. Chúng tôi tạo một bảng có một cột được gọi là created_at có loại
    
    
    
    
    Demo: Current Date
    
    
    
    
    83
  2. Chúng tôi đặt múi giờ hiện tại cho phiên thành UTC+3. Xin lưu ý rằng trong PostgreSQL, chúng tôi có thể chỉ định múi giờ hiện tại bằng cách sử dụng số nguyên bù hoặc tên múi giờ [e. g. , Mỹ/New_York]. Để có danh sách tên múi giờ được hỗ trợ, hãy truy vấn bảng pg_timezone_names.
    
    
    
    
    Demo: Current Date
    
    
    
    
    02
  3. Chúng tôi đảm bảo rằng phần bù múi giờ đã được đặt chính xác
  4. Chúng tôi chèn một hàng có giá trị created_at là 2021-05-12 09. 00. 00 +01. 00 vào bảng mới. Bởi vì cột created_at có loại
    
    
    
    
    Demo: Current Date
    
    
    
    
    83, PostgreSQL chuyển đổi giá trị ngày từ múi giờ đã chỉ định [+01. 00 trong trường hợp của chúng tôi] sang UTC để lưu trữ. Vì vậy, giá trị thực sự được lưu trữ là "2021-05-12 08. 00. 00"
  5. Chúng tôi chọn hàng đã chèn từ bảng và giá trị ngày được chuyển đổi từ UTC sang múi giờ hiện tại là UTC+3
  6. Chúng tôi chèn một hàng khác vào bảng, nhưng lần này không chỉ định phần bù múi giờ. Nếu chúng tôi không bao gồm phần bù múi giờ, PostgreSQL sẽ giả định rằng giá trị ngày mà chúng tôi cung cấp dựa trên múi giờ hiện tại, trong trường hợp của chúng tôi là UTC+3. Vì vậy, trước khi lưu trữ giá trị ngày này, PostgreSQL sẽ chuyển đổi nó từ múi giờ hiện tại [UTC+3 trong trường hợp của chúng tôi] sang UTC và giá trị ngày sau sẽ được lưu trữ. 2021-05-12 06. 00. 00 UTC
  7. Cuối cùng, chúng tôi chọn lại tất cả các hàng từ bảng của mình và thấy rằng giá trị ngày mà chúng tôi vừa chèn được hiển thị theo múi giờ hiện tại. 2021-05-12 09. 00. 00+03

Để lưu trữ giá trị ngày và giờ trong PostgreSQL, tôi sẽ sử dụng loại





Demo: Current Date



04. Về cơ bản, tôi sẽ chọn dấu thời gian thay vì dấu thời gian, vì những lý do được đề cập trong bài viết sau từ PostgreSQL Wiki. Đừng làm điều này - Lưu trữ ngày/giờ

DynamoDB

Bạn có thể sử dụng các kiểu dữ liệu chuỗi và số để lưu trữ ngày tháng và dấu thời gian. Chúng ta có thể sử dụng kiểu dữ liệu chuỗi để lưu trữ các giá trị ngày và giờ ở định dạng ISO 8601 [e. g. , 2021-05-12, 2021-05-12T21. 00. 59. 123Z]. Và chúng ta có thể sử dụng kiểu dữ liệu số để lưu trữ các giá trị ngày và giờ dưới dạng dấu thời gian UNIX [thời gian Epoch] - một số giây kể từ ngày 1 tháng 1 năm 1970 00. 00. 00 UTC. Điều này sẽ cho phép chúng tôi sắp xếp và truy vấn các mục theo ngày và giờ

MongoDB

Trong MongoDB, bên trong, ngày tháng được lưu trữ dưới dạng số nguyên có chữ ký 64 bit đại diện cho một số mili giây kể từ kỷ nguyên Unix [1 tháng 1 năm 1970 00. 00. 00 UTC]. Các giá trị âm biểu thị các ngày trước kỷ nguyên Unix

Để chèn ngày vào Mongo shell, chúng ta có thể sử dụng đối tượng Date

const myDate = new Date['11 May 2021 18:30:01 UTC'];

console.log[myDate];
// Tue May 11 2021 21:30:01 GMT+0300 [Eastern European Summer Time]

console.log[myDate.getHours[]];
// 21, not 18 as you might have expected
0

Bạn có thể chuyển một chuỗi ISO 8601 hoặc một số mili giây kể từ kỷ nguyên Unix vào hàm tạo Ngày

const myDate = new Date['11 May 2021 18:30:01 UTC'];

console.log[myDate];
// Tue May 11 2021 21:30:01 GMT+0300 [Eastern European Summer Time]

console.log[myDate.getHours[]];
// 21, not 18 as you might have expected
1

Nếu bạn chỉ định chênh lệch múi giờ, ngày sẽ được chuyển thành UTC

const myDate = new Date['11 May 2021 18:30:01 UTC'];

console.log[myDate];
// Tue May 11 2021 21:30:01 GMT+0300 [Eastern European Summer Time]

console.log[myDate.getHours[]];
// 21, not 18 as you might have expected
2

Phần kết luận

Cẩn thận khi làm việc với ngày và giờ. Luôn kiểm tra xem ngày bạn lưu trữ và làm việc có dựa trên múi giờ bạn mong đợi không. Đảm bảo rằng các môi trường bạn sử dụng để chạy các phần khác nhau của ứng dụng [e. g. , máy chủ web, cơ sở dữ liệu, v.v. ] có cấu hình múi giờ chính xác và nhất quán

Ngày JS có sử dụng thời gian hệ thống không?

JavaScript lưu trữ ngày dưới dạng mili giây . Giờ không là ngày 01 tháng 1 năm 1970 00. 00. 00 UTC. Một ngày [24 giờ] là 86 400 000 mili giây.

Ngày JavaScript lấy thời gian từ đâu?

JavaScript Đối tượng ngày đại diện cho một thời điểm duy nhất ở định dạng độc lập với nền tảng . Các đối tượng ngày đóng gói một số nguyên đại diện cho mili giây kể từ nửa đêm vào đầu ngày 1 tháng 1 năm 1970, UTC [kỷ nguyên].

Ngày có sử dụng giờ địa phương không?

Không có múi giờ hoặc định dạng chuỗi được lưu trữ trong chính đối tượng Date. Khi các chức năng khác nhau của đối tượng Date được sử dụng, múi giờ địa phương của máy tính được áp dụng cho biểu diễn bên trong .

Múi giờ ngày JavaScript có nhận biết không?

Đây là gì? . Nó lưu dấu thời gian biểu thị số mili giây đã trôi qua kể từ nửa đêm ngày 1 tháng 1 năm 1970. Tuy nhiên, chúng ta có thể sử dụng phương thức toLocaleString để lấy một chuỗi dành riêng cho ngôn ngữ được điều chỉnh theo múi giờ. The Date object in JavaScript does not store a time zone. It stores a timestamp that represents the number of milliseconds that have passed since midnight on January 1st, 1970. However, we can use the toLocaleString method to get a locale-specific string that is adjusted to a time zone.

Chủ Đề