Nhận thời gian JavaScript

Dấu thời gian UNIX được định nghĩa là số giây kể từ ngày 1 tháng 1 năm 1970 UTC. Trong JavaScript, để lấy dấu thời gian hiện tại, bạn có thể sử dụng Date.now()

Điều quan trọng cần lưu ý là Date.now() sẽ trả về số mili giây kể từ ngày 1 tháng 1 năm 1970 UTC. Nếu bạn cần số giây, bạn sẽ cần chia kết quả cho 1000

function getTimestampInSeconds () {

return Math.floor(Date.now() / 1000)

}


Lớp Date có đầy đủ các loại phương thức tiện dụng. Nếu bạn đang làm bất cứ điều gì với ngày tháng trong JavaScript, bạn sẽ muốn sử dụng nó. Bạn có thể tìm thấy API hoàn chỉnh tại đây


Trước khi bạn đi

Tôi biết, một bản tin khác - nhưng hãy nghe tôi nói. Hầu hết các bản tin JavaScript đều tệ. Lần cuối cùng bạn thực sự mong muốn có được một cái là khi nào?

Chúng tôi gọi nó là Byte, nhưng những người khác gọi nó là bản tin yêu thích của họ

tham gia byte

Được gửi tới 151.908 nhà phát triển vào mỗi thứ Hai và thứ Năm

    Nhận thời gian JavaScript

    Sdu

    @sduduzo_g

    Đây là bản tin đầu tiên mà tôi mở danh sách phát nhạc và tối đa hóa cửa sổ trình duyệt của mình chỉ để yên tâm đọc nó. Kudos để @uidotdev cho nội dung hàng tuần tuyệt vời

    Nhận thời gian JavaScript

    Brandon Bayer

    @flybayer

    Bản tin Bytes là một tác phẩm nghệ thuật. Đó là bản tin dành cho nhà phát triển duy nhất mà tôi đã đăng ký. Bằng cách nào đó, họ lấy những thứ hơi nhàm chán và truyền vào đó một lượng hài vừa phải để khiến bạn cười khúc khích

    Nhận thời gian JavaScript

    John Hawley

    @johnhawly

    Bytes là bản tin yêu thích của tôi kể từ khi thành lập. Đó là điều yêu thích của tôi mà tôi mong đợi vào thứ Hai. Tuyệt vời với một tách cà phê nóng

    Nhận thời gian JavaScript

    màu xanh lá cây Garrett

    @garrettgreen

    Tôi đăng ký RẤT NHIỀU bản tin dành cho nhà phát triển (đặc biệt là JS/TS/Node) và Byte của @uidotdev luôn là một sự thay đổi thú vị, được hoan nghênh đối với hầu hết (hài hước, vui vẻ, v.v.) nhưng vẫn toàn diện/hữu ích

    Nhận thời gian JavaScript

    Muhammad

    @mhashim6_

    Thực sự là bản tin duy nhất mà tôi chờ đợi mỗi tuần

    Nhận thời gian JavaScript

    Grayson Hicks

    @graysonhicks

    Bytes là bản tin dành cho nhà phát triển mà tôi mong chờ nhất mỗi tuần. Cân bằng tuyệt vời giữa nội dung và ngữ cảnh. Cảm ơn @uidotdev

    Nhận thời gian JavaScript

    Mitchell Wright

    @mitchellbwright

    Tôi biết tôi đã nói điều đó trước đây, nhưng @tylermcginnis không bỏ lỡ email Bytes. Nếu bạn là nhà phát triển, bạn thực sự cần phải đăng ký

    Nhận thời gian JavaScript

    Ali Spittel

    @aspittel

    Tôi có thể nói rằng tôi cười khúc khích mỗi khi nhận được email @uidotdev mỗi tuần không?

    Nhận thời gian JavaScript

    Chris Finn

    @thefinnomenon

    Mọi lập trình viên JavaScript nên đăng ký nhận bản tin từ @uidotdev. Họ không chỉ quản lý để đưa tin ngắn gọn về những tin tức nóng hổi trong thế giới JavaScript trong tuần mà họ còn quản lý để thêm sự hài hước mới mẻ vào tất cả

    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 thức quản lý ngày/giờ

    Chẳng hạn, chúng ta 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

    // 31 Dec 1969
    let Dec31_1969 = new Date(-24 * 3600 * 1000);
    alert( Dec31_1969 );
    3 mới, hãy gọi
    // 31 Dec 1969
    let Dec31_1969 = new Date(-24 * 3600 * 1000);
    alert( Dec31_1969 );
    4 với một trong các đối số sau

    // 31 Dec 1969
    let Dec31_1969 = new Date(-24 * 3600 * 1000);
    alert( Dec31_1969 );
    4

    Không có đối số – tạo một đối tượng

    // 31 Dec 1969
    let Dec31_1969 = new Date(-24 * 3600 * 1000);
    alert( Dec31_1969 );
    3 cho ngày và giờ hiện tại

    let now = new Date();
    alert( now ); // shows current date/time

    // 31 Dec 1969
    let Dec31_1969 = new Date(-24 * 3600 * 1000);
    alert( Dec31_1969 );
    7

    Tạo một đối tượng

    // 31 Dec 1969
    let Dec31_1969 = new Date(-24 * 3600 * 1000);
    alert( Dec31_1969 );
    3 với thời gian bằng số mili giây (1/1000 giây) được truyền sau ngày 1 tháng 1 năm 1970 UTC+0

    ________số 8_______

    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 đại diện số nhẹ của một ngày. Chúng tôi luôn có thể tạo một ngày từ dấu thời gian bằng cách sử dụng

    // 31 Dec 1969
    let Dec31_1969 = new Date(-24 * 3600 * 1000);
    alert( Dec31_1969 );
    9 và chuyển đổi đối tượng
    // 31 Dec 1969
    let Dec31_1969 = new Date(-24 * 3600 * 1000);
    alert( Dec31_1969 );
    3 hiện có thành dấu thời gian bằng cách sử dụng phương thức
    let date = new Date("2017-01-26");
    alert(date);
    // The time is not set, so it's assumed to be midnight GMT and
    // is adjusted according to the timezone the code is run in
    // So the result could be
    // Thu Jan 26 2017 11:00:00 GMT+1100 (Australian Eastern Daylight Time)
    // or
    // Wed Jan 25 2017 16:00:00 GMT-0800 (Pacific Standard Time)
    1 (xem bên dưới)

    Ngày trước 01. 01. 1970 có dấu thời gian âm, e. g

    // 31 Dec 1969
    let Dec31_1969 = new Date(-24 * 3600 * 1000);
    alert( Dec31_1969 );

    let date = new Date("2017-01-26");
    alert(date);
    // The time is not set, so it's assumed to be midnight GMT and
    // is adjusted according to the timezone the code is run in
    // So the result could be
    // Thu Jan 26 2017 11:00:00 GMT+1100 (Australian Eastern Daylight Time)
    // or
    // Wed Jan 25 2017 16:00:00 GMT-0800 (Pacific Standard Time)
    2

    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 của

    let date = new Date("2017-01-26");
    alert(date);
    // The time is not set, so it's assumed to be midnight GMT and
    // is adjusted according to the timezone the code is run in
    // So the result could be
    // Thu Jan 26 2017 11:00:00 GMT+1100 (Australian Eastern Daylight Time)
    // or
    // Wed Jan 25 2017 16:00:00 GMT-0800 (Pacific Standard Time)
    3, chúng tôi sẽ đề cập sau

    let date = new Date("2017-01-26");
    alert(date);
    // The time is not set, so it's assumed to be midnight GMT and
    // is adjusted according to the timezone the code is run in
    // So the result could be
    // Thu Jan 26 2017 11:00:00 GMT+1100 (Australian Eastern Daylight Time)
    // or
    // Wed Jan 25 2017 16:00:00 GMT-0800 (Pacific Standard Time)

    let date = new Date("2017-01-26");
    alert(date);
    // The time is not set, so it's assumed to be midnight GMT and
    // is adjusted according to the timezone the code is run in
    // So the result could be
    // Thu Jan 26 2017 11:00:00 GMT+1100 (Australian Eastern Daylight Time)
    // or
    // Wed Jan 25 2017 16:00:00 GMT-0800 (Pacific Standard Time)
    4

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

    • let date = new Date("2017-01-26");
      alert(date);
      // The time is not set, so it's assumed to be midnight GMT and
      // is adjusted according to the timezone the code is run in
      // So the result could be
      // Thu Jan 26 2017 11:00:00 GMT+1100 (Australian Eastern Daylight Time)
      // or
      // Wed Jan 25 2017 16:00:00 GMT-0800 (Pacific Standard Time)
      5 phải có 4 chữ số. Để tương thích, 2 chữ số cũng được chấp nhận và coi là
      let date = new Date("2017-01-26");
      alert(date);
      // The time is not set, so it's assumed to be midnight GMT and
      // is adjusted according to the timezone the code is run in
      // So the result could be
      // Thu Jan 26 2017 11:00:00 GMT+1100 (Australian Eastern Daylight Time)
      // or
      // Wed Jan 25 2017 16:00:00 GMT-0800 (Pacific Standard Time)
      6, e. g.
      let date = new Date("2017-01-26");
      alert(date);
      // The time is not set, so it's assumed to be midnight GMT and
      // is adjusted according to the timezone the code is run in
      // So the result could be
      // Thu Jan 26 2017 11:00:00 GMT+1100 (Australian Eastern Daylight Time)
      // or
      // Wed Jan 25 2017 16:00:00 GMT-0800 (Pacific Standard Time)
      7 giống như
      let date = new Date("2017-01-26");
      alert(date);
      // The time is not set, so it's assumed to be midnight GMT and
      // is adjusted according to the timezone the code is run in
      // So the result could be
      // Thu Jan 26 2017 11:00:00 GMT+1100 (Australian Eastern Daylight Time)
      // or
      // Wed Jan 25 2017 16:00:00 GMT-0800 (Pacific Standard Time)
      8 ở đây, nhưng luôn khuyến khích sử dụng 4 chữ số
    • Số lượng
      let date = new Date("2017-01-26");
      alert(date);
      // The time is not set, so it's assumed to be midnight GMT and
      // is adjusted according to the timezone the code is run in
      // So the result could be
      // Thu Jan 26 2017 11:00:00 GMT+1100 (Australian Eastern Daylight Time)
      // or
      // Wed Jan 25 2017 16:00:00 GMT-0800 (Pacific Standard Time)
      9 bắt đầu bằng
      new Date(2011, 0, 1, 0, 0, 0, 0); // 1 Jan 2011, 00:00:00
      new Date(2011, 0, 1); // the same, hours etc are 0 by default
      0 (tháng 1), cho đến ngày _______22_______1 (tháng 12)
    • Tham số
      new Date(2011, 0, 1, 0, 0, 0, 0); // 1 Jan 2011, 00:00:00
      new Date(2011, 0, 1); // the same, hours etc are 0 by default
      2 thực sự là ngày trong tháng, nếu không có thì
      new Date(2011, 0, 1, 0, 0, 0, 0); // 1 Jan 2011, 00:00:00
      new Date(2011, 0, 1); // the same, hours etc are 0 by default
      3 được giả định
    • Nếu
      new Date(2011, 0, 1, 0, 0, 0, 0); // 1 Jan 2011, 00:00:00
      new Date(2011, 0, 1); // the same, hours etc are 0 by default
      4 vắng mặt, chúng được coi là bằng nhau
      new Date(2011, 0, 1, 0, 0, 0, 0); // 1 Jan 2011, 00:00:00
      new Date(2011, 0, 1); // the same, hours etc are 0 by default
      0

    Ví dụ

    new Date(2011, 0, 1, 0, 0, 0, 0); // 1 Jan 2011, 00:00:00
    new Date(2011, 0, 1); // the same, hours etc are 0 by default

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

    let date = new Date(2011, 0, 1, 2, 3, 4, 567);
    alert( date ); // 1.01.2011, 02:03:04.567

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

    // 31 Dec 1969
    let Dec31_1969 = new Date(-24 * 3600 * 1000);
    alert( Dec31_1969 );
    3

    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 có vẻ 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

    new Date(2011, 0, 1, 0, 0, 0, 0); // 1 Jan 2011, 00:00:00
    new Date(2011, 0, 1); // the same, hours etc are 0 by default
    7, mà là
    new Date(2011, 0, 1, 0, 0, 0, 0); // 1 Jan 2011, 00:00:00
    new Date(2011, 0, 1); // the same, hours etc are 0 by default
    8

    Nhiều công cụ JavaScript triển khai một phương pháp không chuẩn

    new Date(2011, 0, 1, 0, 0, 0, 0); // 1 Jan 2011, 00:00:00
    new Date(2011, 0, 1); // the same, hours etc are 0 by default
    7. Phương pháp này không được chấp nhận. Đôi khi nó trả về năm có 2 chữ số. Xin vui lòng không bao giờ sử dụng nó. Có
    new Date(2011, 0, 1, 0, 0, 0, 0); // 1 Jan 2011, 00:00:00
    new Date(2011, 0, 1); // the same, hours etc are 0 by default
    8 trong năm

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

    getDay()Lấy ​​ngày trong tuần, từ
    new Date(2011, 0, 1, 0, 0, 0, 0); // 1 Jan 2011, 00:00:00
    new Date(2011, 0, 1); // the same, hours etc are 0 by default
    0 (Chủ Nhật) đến
    let date = new Date(2011, 0, 1, 2, 3, 4, 567);
    alert( date ); // 1.01.2011, 02:03:04.567
    2 (Thứ Bảy). Ngày đầu tiên luôn là Chủ nhật, ở một số quốc gia thì không, 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 chúng, trả về ngày, tháng, năm, v.v. cho múi giờ UTC+0. getUTCFullYear(), getUTCMonth(), getUTCDay(). Chỉ cần chèn

    let date = new Date(2011, 0, 1, 2, 3, 4, 567);
    alert( date ); // 1.01.2011, 02:03:04.567
    3 ngay sau
    let date = new Date(2011, 0, 1, 2, 3, 4, 567);
    alert( date ); // 1.01.2011, 02:03:04.567
    4

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

    // current date
    let date = new Date();
    
    // the hour in your current time zone
    alert( date.getHours() );
    
    // the hour in UTC+0 time zone (London time without daylight savings)
    alert( date.getUTCHours() );

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

    dành thời gian()

    Trả về dấu thời gian cho ngày – một số mili giây được truyền 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

    // if you are in timezone UTC-1, outputs 60
    // if you are in timezone UTC+3, outputs -180
    alert( new Date().getTimezoneOffset() );

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

    • let date = new Date(2011, 0, 1, 2, 3, 4, 567);
      alert( date ); // 1.01.2011, 02:03:04.567
      5
    • let date = new Date(2011, 0, 1, 2, 3, 4, 567);
      alert( date ); // 1.01.2011, 02:03:04.567
      6
    • let date = new Date(2011, 0, 1, 2, 3, 4, 567);
      alert( date ); // 1.01.2011, 02:03:04.567
      7
    • let date = new Date(2011, 0, 1, 2, 3, 4, 567);
      alert( date ); // 1.01.2011, 02:03:04.567
      8
    • let date = new Date(2011, 0, 1, 2, 3, 4, 567);
      alert( date ); // 1.01.2011, 02:03:04.567
      9
    • // current date
      let date = new Date();
      
      // the hour in your current time zone
      alert( date.getHours() );
      
      // the hour in UTC+0 time zone (London time without daylight savings)
      alert( date.getUTCHours() );
      0
    • // current date
      let date = new Date();
      
      // the hour in your current time zone
      alert( date.getHours() );
      
      // the hour in UTC+0 time zone (London time without daylight savings)
      alert( date.getUTCHours() );
      1
    • // current date
      let date = new Date();
      
      // the hour in your current time zone
      alert( date.getHours() );
      
      // the hour in UTC+0 time zone (London time without daylight savings)
      alert( date.getUTCHours() );
      2 (đặt toàn bộ ngày theo mili giây kể từ 01. 01. 1970 UTC)

    Chẳng hạn, mỗi người trong số họ ngoại trừ

    // current date
    let date = new Date();
    
    // the hour in your current time zone
    alert( date.getHours() );
    
    // the hour in UTC+0 time zone (London time without daylight savings)
    alert( date.getUTCHours() );
    3 đều có biến thể UTC.
    // current date
    let date = new Date();
    
    // the hour in your current time zone
    alert( date.getHours() );
    
    // the hour in UTC+0 time zone (London time without daylight savings)
    alert( date.getUTCHours() );
    4

    Như chúng ta có thể thấy, một số phương thức có thể thiết lập nhiều thành phần cùng một lúc, ví dụ như

    // current date
    let date = new Date();
    
    // the hour in your current time zone
    alert( date.getHours() );
    
    // the hour in UTC+0 time zone (London time without daylight savings)
    alert( date.getUTCHours() );
    5. Các thành phần không được đề cập không được sửa đổi

    Ví dụ

    let today = new Date();
    
    today.setHours(0);
    alert(today); // still today, but the hour is changed to 0
    
    today.setHours(0, 0, 0, 0);
    alert(today); // still today, now 00:00:00 sharp.

    Tự động sửa lỗi là một tính năng rất tiện dụng của các đối tượng

    // 31 Dec 1969
    let Dec31_1969 = new Date(-24 * 3600 * 1000);
    alert( Dec31_1969 );
    3. Chúng tôi có thể đặt các giá trị ngoài phạm vi và nó sẽ tự động điều chỉnh

    Ví dụ

    let date = new Date(2013, 0, 32); // 32 Jan 2013 ?!?
    alert(date); // ...is 1st Feb 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 ta cần tăng ngày “28 Feb 2016” thêm 2 ngày. Có thể là “2 tháng 3” hoặc “1 tháng 3” trong trường hợp năm nhuận. Chúng ta không cần phải suy nghĩ về nó. Chỉ cần thêm 2 ngày. Đối tượng

    // 31 Dec 1969
    let Dec31_1969 = new Date(-24 * 3600 * 1000);
    alert( Dec31_1969 );
    3 sẽ làm phần còn lại

    // 0 means 01.01.1970 UTC+0
    let Jan01_1970 = new Date(0);
    alert( Jan01_1970 );
    
    // now add 24 hours, get 02.01.1970 UTC+0
    let Jan02_1970 = new Date(24 * 3600 * 1000);
    alert( Jan02_1970 );
    0

    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. Chẳng hạn, hãy lấy ngày cho “70 giây sau bây giờ”

    // 0 means 01.01.1970 UTC+0
    let Jan01_1970 = new Date(0);
    alert( Jan01_1970 );
    
    // now add 24 hours, get 02.01.1970 UTC+0
    let Jan02_1970 = new Date(24 * 3600 * 1000);
    alert( Jan02_1970 );
    1

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

    // 0 means 01.01.1970 UTC+0
    let Jan01_1970 = new Date(0);
    alert( Jan01_1970 );
    
    // now add 24 hours, get 02.01.1970 UTC+0
    let Jan02_1970 = new Date(24 * 3600 * 1000);
    alert( Jan02_1970 );
    2

    Khi một đối tượng

    // 31 Dec 1969
    let Dec31_1969 = new Date(-24 * 3600 * 1000);
    alert( Dec31_1969 );
    3 được chuyển đổi thành số, nó sẽ trở thành dấu thời gian giống như
    let date = new Date("2017-01-26");
    alert(date);
    // The time is not set, so it's assumed to be midnight GMT and
    // is adjusted according to the timezone the code is run in
    // So the result could be
    // Thu Jan 26 2017 11:00:00 GMT+1100 (Australian Eastern Daylight Time)
    // or
    // Wed Jan 25 2017 16:00:00 GMT-0800 (Pacific Standard Time)
    1

    // 0 means 01.01.1970 UTC+0
    let Jan01_1970 = new Date(0);
    alert( Jan01_1970 );
    
    // now add 24 hours, get 02.01.1970 UTC+0
    let Jan02_1970 = new Date(24 * 3600 * 1000);
    alert( Jan02_1970 );
    3

    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 trong ms

    Điều đó có thể được sử dụng để đo thời gian

    // 0 means 01.01.1970 UTC+0
    let Jan01_1970 = new Date(0);
    alert( Jan01_1970 );
    
    // now add 24 hours, get 02.01.1970 UTC+0
    let Jan02_1970 = new Date(24 * 3600 * 1000);
    alert( Jan02_1970 );
    4

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

    // 31 Dec 1969
    let Dec31_1969 = new Date(-24 * 3600 * 1000);
    alert( Dec31_1969 );
    3

    Có một phương thức đặc biệt

    // if you are in timezone UTC-1, outputs 60
    // if you are in timezone UTC+3, outputs -180
    alert( new Date().getTimezoneOffset() );
    1 trả về dấu thời gian hiện tại

    Về mặt ngữ nghĩa, nó tương đương với

    // if you are in timezone UTC-1, outputs 60
    // if you are in timezone UTC+3, outputs -180
    alert( new Date().getTimezoneOffset() );
    2, nhưng nó không tạo đối tượng trung gian
    // 31 Dec 1969
    let Dec31_1969 = new Date(-24 * 3600 * 1000);
    alert( Dec31_1969 );
    3. 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 dụng khác

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

    // 0 means 01.01.1970 UTC+0
    let Jan01_1970 = new Date(0);
    alert( Jan01_1970 );
    
    // now add 24 hours, get 02.01.1970 UTC+0
    let Jan02_1970 = new Date(24 * 3600 * 1000);
    alert( Jan02_1970 );
    5

    Nếu chúng ta muốn có một điểm chuẩn đáng tin cậy về chức năng ngốn CPU, chúng ta nên cẩn thận

    Chẳng hạn, hãy đo 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"

    // 0 means 01.01.1970 UTC+0
    let Jan01_1970 = new Date(0);
    alert( Jan01_1970 );
    
    // now add 24 hours, get 02.01.1970 UTC+0
    let Jan02_1970 = new Date(24 * 3600 * 1000);
    alert( Jan02_1970 );
    6

    Hai cái 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

    let date = new Date("2017-01-26");
    alert(date);
    // The time is not set, so it's assumed to be midnight GMT and
    // is adjusted according to the timezone the code is run in
    // So the result could be
    // Thu Jan 26 2017 11:00:00 GMT+1100 (Australian Eastern Daylight Time)
    // or
    // Wed Jan 25 2017 16:00:00 GMT-0800 (Pacific Standard Time)
    1 rõ ràng để lấy ngày tính bằng ms và cái còn lại dựa vào phép biến đổi ngày thành số. Kết quả của họ luôn giống nhau

    Vì 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 chức năng rất đơn giản, vì vậy chúng tôi phải thực hiện ít nhất 100000 lần

    Hãy đo lường

    // 0 means 01.01.1970 UTC+0
    let Jan01_1970 = new Date(0);
    alert( Jan01_1970 );
    
    // now add 24 hours, get 02.01.1970 UTC+0
    let Jan02_1970 = new Date(24 * 3600 * 1000);
    alert( Jan02_1970 );
    7

    Ồ. Sử dụng

    // if you are in timezone UTC-1, outputs 60
    // if you are in timezone UTC+3, outputs -180
    alert( new Date().getTimezoneOffset() );
    5 nhanh hơn rất nhiều. Đó là bởi vì không có chuyển đổi loại, các công cụ sẽ 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à một điểm chuẩn tốt

    Hãy tưởng tượng rằng tại thời điểm chạy

    // if you are in timezone UTC-1, outputs 60
    // if you are in timezone UTC+3, outputs -180
    alert( new Date().getTimezoneOffset() );
    6, CPU đang làm một việc gì đó song song và nó đang lấy tài nguyên. Và đến thời điểm chạy
    // if you are in timezone UTC-1, outputs 60
    // if you are in timezone UTC+3, outputs -180
    alert( new Date().getTimezoneOffset() );
    7 công việc đó đã hoàn thành

    Một kịch bản khá thực tế cho một hệ điều hành đa tiến 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

    Để đo đ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

    // 0 means 01.01.1970 UTC+0
    let Jan01_1970 = new Date(0);
    alert( Jan01_1970 );
    
    // now add 24 hours, get 02.01.1970 UTC+0
    let Jan02_1970 = new Date(24 * 3600 * 1000);
    alert( Jan02_1970 );
    8

    Các công cụ JavaScript hiện đại bắt đầu chỉ áp dụng 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, lần thực hiện đầ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 lần khởi động

    // 0 means 01.01.1970 UTC+0
    let Jan01_1970 = new Date(0);
    alert( Jan01_1970 );
    
    // now add 24 hours, get 02.01.1970 UTC+0
    let Jan02_1970 = new Date(24 * 3600 * 1000);
    alert( Jan02_1970 );
    9

    Hãy cẩn thận khi thực hiện 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 “các bài kiểm tra nhân tạo” so với “việc sử dụng thông 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 thức hoạt động của một nhà điều hành hoặc một chức năng tích hợp sẵn. Vì vậy, nếu bạn thực sự muốn hiểu hiệu suất, thì hãy nghiên cứu cách thức hoạt động của công cụ JavaScript. Và sau đó, bạn có thể sẽ không cần microbenchmark nữa

    Gói bài viết tuyệt vời về V8 có thể được tìm thấy tại https. //mrale. ph

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

    Định dạng chuỗi phải là.

    // if you are in timezone UTC-1, outputs 60
    // if you are in timezone UTC+3, outputs -180
    alert( new Date().getTimezoneOffset() );
    8, ở đâu

    • // if you are in timezone UTC-1, outputs 60
      // if you are in timezone UTC+3, outputs -180
      alert( new Date().getTimezoneOffset() );
      9 – là ngày. năm tháng ngày
    • Ký tự
      let today = new Date();
      
      today.setHours(0);
      alert(today); // still today, but the hour is changed to 0
      
      today.setHours(0, 0, 0, 0);
      alert(today); // still today, now 00:00:00 sharp.
      0 được sử dụng làm dấu phân cách
    • let today = new Date();
      
      today.setHours(0);
      alert(today); // still today, but the hour is changed to 0
      
      today.setHours(0, 0, 0, 0);
      alert(today); // still today, now 00:00:00 sharp.
      1 – là thời gian. giờ, phút, giây và mili giây
    • Phần tùy chọn
      let today = new Date();
      
      today.setHours(0);
      alert(today); // still today, but the hour is changed to 0
      
      today.setHours(0, 0, 0, 0);
      alert(today); // still today, now 00:00:00 sharp.
      2 biểu thị múi giờ ở định dạng
      let today = new Date();
      
      today.setHours(0);
      alert(today); // still today, but the hour is changed to 0
      
      today.setHours(0, 0, 0, 0);
      alert(today); // still today, now 00:00:00 sharp.
      3. Một chữ cái duy nhất
      let today = new Date();
      
      today.setHours(0);
      alert(today); // still today, but the hour is changed to 0
      
      today.setHours(0, 0, 0, 0);
      alert(today); // still today, now 00:00:00 sharp.
      4 có nghĩa là UTC+0

    Cũng có thể có các biến thể ngắn hơn, chẳng hạn như

    // if you are in timezone UTC-1, outputs 60
    // if you are in timezone UTC+3, outputs -180
    alert( new Date().getTimezoneOffset() );
    9 hoặc
    let today = new Date();
    
    today.setHours(0);
    alert(today); // still today, but the hour is changed to 0
    
    today.setHours(0, 0, 0, 0);
    alert(today); // still today, now 00:00:00 sharp.
    6 hoặc thậm chí là
    let today = new Date();
    
    today.setHours(0);
    alert(today); // still today, but the hour is changed to 0
    
    today.setHours(0, 0, 0, 0);
    alert(today); // still today, now 00:00:00 sharp.
    7

    Cuộc gọi đến ____52_______8 phân tích cú pháp chuỗi ở đị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ề

    let today = new Date();
    
    today.setHours(0);
    alert(today); // still today, but the hour is changed to 0
    
    today.setHours(0, 0, 0, 0);
    alert(today); // still today, now 00:00:00 sharp.
    9

    Ví dụ

    // 31 Dec 1969
    let Dec31_1969 = new Date(-24 * 3600 * 1000);
    alert( Dec31_1969 );
    0

    Chúng ta có thể ngay lập tức tạo một đối tượng

    let date = new Date(2013, 0, 32); // 32 Jan 2013 ?!?
    alert(date); // ...is 1st Feb 2013!
    0 từ dấu thời gian

    // 31 Dec 1969
    let Dec31_1969 = new Date(-24 * 3600 * 1000);
    alert( Dec31_1969 );
    1

    • Ngày và giờ trong JavaScript được biểu diễn bằng đối tượng Date. Chúng tôi không thể tạo “chỉ ngày” hoặc “chỉ thời gian”.
      // 31 Dec 1969
      let Dec31_1969 = new Date(-24 * 3600 * 1000);
      alert( Dec31_1969 );
      3 đồ vật luôn mang theo cả hai
    • Các tháng được tính từ 0 (có, tháng 1 là tháng 0)
    • Các ngày trong tuần trong
      let date = new Date(2013, 0, 32); // 32 Jan 2013 ?!?
      alert(date); // ...is 1st Feb 2013!
      2 cũng được tính từ 0 (đó là Chủ nhật)
    • // 31 Dec 1969
      let Dec31_1969 = new Date(-24 * 3600 * 1000);
      alert( Dec31_1969 );
      3 tự động sửa khi các thành phần nằm ngoài phạm vi được đặt. Tốt cho việc cộng/trừ ngày/tháng/giờ
    • Ngày có thể được trừ đi, đưa ra sự khác biệt của chúng tính bằng mili giây. Đó là bởi vì
      // 31 Dec 1969
      let Dec31_1969 = new Date(-24 * 3600 * 1000);
      alert( Dec31_1969 );
      3 trở thành dấu thời gian khi được chuyển đổi thành số
    • Sử dụng
      // if you are in timezone UTC-1, outputs 60
      // if you are in timezone UTC+3, outputs -180
      alert( new Date().getTimezoneOffset() );
      1 để 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, không phải giây

    Đôi khi chúng ta 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 đo thời gian tính 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ó. Chẳng hạn, trình duyệt có hiệu suất. 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)

    // 31 Dec 1969
    let Dec31_1969 = new Date(-24 * 3600 * 1000);
    alert( Dec31_1969 );
    2

    Nút. js có mô-đun

    let date = new Date(2013, 0, 32); // 32 Jan 2013 ?!?
    alert(date); // ...is 1st Feb 2013!
    6 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 đạt được độ chính xác cao hơn, chỉ là không có trong
    // 31 Dec 1969
    let Dec31_1969 = new Date(-24 * 3600 * 1000);
    alert( Dec31_1969 );
    3

    Làm cách nào để có được thời gian hiện tại trong JavaScript?

    Trong JavaScript, chúng ta có thể dễ dàng lấy ngày hoặc giờ hiện tại bằng cách sử dụng đối tượng Date() mới . Theo mặc định, nó sử dụng múi giờ của trình duyệt của chúng tôi và hiển thị ngày ở dạng chuỗi văn bản đầy đủ, chẳng hạn như "Fri Jun 17 2022 10. 54. 59 GMT+0100 (Giờ mùa hè của Anh)" chứa ngày, giờ và múi giờ hiện tại.

    Làm cách nào để in thời gian trong JavaScript?

    Sử dụng tập lệnh sau để lấy thời gian hiện tại bằng JavaScript trong “H. i. định dạng s. var hôm nay = Ngày mới(); . .
    getHours() – Cung cấp giờ hiện tại trong khoảng 0-23
    getMinutes() – Cung cấp số phút hiện tại trong khoảng 0-59
    getSeconds() – Cung cấp giây hiện tại trong khoảng 0-59

    Làm cách nào để có thời gian 12 giờ trong JavaScript?

    var now = new Date(); . var hours = now. getHours() % 12. 12; // 12h thay vì 24h, với 12 thay vì 0.

    Date() getTime() mới là gì?

    Phương thức JavaScript Date getTime() được được sử dụng để trả về số mili giây kể từ ngày 1 tháng 1 năm 1970 . khi một đối tượng Ngày mới được tạo, nó sẽ lưu trữ dữ liệu ngày và giờ khi nó được tạo. Khi phương thức getTime() được gọi trên đối tượng ngày này, nó trả về số mili giây kể từ ngày 1 tháng 1 năm 1970 (Kỷ nguyên Unix).