Trong hướng dẫn này, chúng ta sẽ học cách chuyển đổi các đối tượng ngày tháng trong JavaScript thành một chuỗi. Trong JavaScript, chúng ta chỉ có thể gọi một số phương thức trên chuỗi. Vì vậy, chúng ta cần chuyển đổi ngày thành chuỗi để sử dụng ngày với các phương thức như vậy
Ở đây, chúng tôi có ba cách tiếp cận khác nhau để chuyển đổi đối tượng ngày thành một chuỗi
Sử dụng Phương thức toString[]
Trong cách tiếp cận này, chúng tôi sẽ sử dụng phương thức toString[] của JavaScript để chuyển đổi đối tượng ngày thành một chuỗi. Phương thức toString[] rất hữu ích để chuyển đổi biến của bất kỳ kiểu dữ liệu nào như số, đối tượng hoặc mảng thành chuỗi
cú pháp
Người dùng có thể làm theo cú pháp bên dưới để sử dụng phương thức toString[]
let date = new Date[]; let datestr = date.toString[];
Ví dụ
Trong ví dụ bên dưới, chúng ta đã tạo đối tượng ngày tháng bằng hàm tạo của lớp Date[]. Chúng tôi đã sử dụng phương thức toString[] để chuyển đổi đối tượng ngày thành một chuỗi. Ngoài ra, chúng tôi đã kiểm tra loại chuỗi được chuyển đổi để làm rõ đối tượng đó được chuyển đổi thành chuỗi
Converting date object to string in JavaScript.
Convert date to string using toString[] method.
Sử dụng phương thức toISOString[]
Phương thức toISOString[] được sử dụng để chuyển đổi đối tượng ngày thành định dạng chuỗi ISO. Nó là một phương thức tích hợp của lớp Date của JavaScript
cú pháp
Người dùng có thể làm theo cú pháp bên dưới để sử dụng phương thức toISOString[]
let date = new Date[]; let datestr = date.toISOString[];
Ví dụ
Trong ví dụ dưới đây, chúng tôi đã chuyển đổi đối tượng ngày tháng thành chuỗi bằng phương thức toISOString[]. Người dùng có thể thấy trong đầu ra rằng định dạng ngày cũng được thay đổi vì chúng tôi đã chuyển đổi đối tượng ngày thành chuỗi ISO
Converting date object to string in JavaScript.
Convert date to string using date.toISOString[] method.
Sử dụng khoảnh khắc. định dạng js[] Phương thức
Khoảnh khắc. thư viện js bao gồm phương thức format[] để định dạng đối tượng ngày thành định dạng chuỗi. Trong tham số của phương thức format[], người dùng có thể truyền định dạng cần thiết cho chuỗi ngày tháng
cú pháp
Người dùng có thể làm theo cú pháp dưới đây để sử dụng. phương thức format[] của Khoảnh khắc. js
date = moment[].format['YY – MM - DD HH : mm : ss'];
Thông số
Tất cả các thông số của thời điểm này. phương thức format[] là tùy chọn
YY - Nó đại diện cho năm
MM - Nó đại diện cho Tháng
DD − Tham số này dành cho ngày
HH - Nó dành cho hàng giờ
mm - Nó dành cho phút
ss - Nó đại diện cho giây
Ví dụ
Trong ví dụ bên dưới, chúng tôi đã sử dụng Moment. thư viện js của JavaScript. Chúng tôi đã tạo hai đối tượng ngày;
Converting date object to string in JavaScript.
Convert date to string using moment[].format[] method.
Người dùng đã học được ba cách tiếp cận để chuyển đổi đối tượng ngày tháng thành một chuỗi. Cách tiếp cận hiện đại là cách cuối cùng, sử dụng phương thức format[] của Moment. js. Nó cho phép người dùng đặt dấu phân cách trong chuỗi ngày. Tuy nhiên, người dùng cũng có thể sử dụng phương thức toDateString[] để giải quyết vấn đề
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 ];
4Khô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ạilet now = new Date[];
alert[ now ]; // shows current date/time
// 31 Dec 1969
let Dec31_1969 = new Date[-24 * 3600 * 1000];
alert[ Dec31_1969 ];
7Tạ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// 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 ];
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]
2Nế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 saulet 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]
4Tạ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
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ố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]
- Số lượng
9 bắt đầu bằnglet 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]
0 [tháng 1], cho đến ngày __27_______1 [tháng 12]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
- Tham số
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ả địnhnew 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
- Nếu
4 vắng mặt, chúng được coi là bằng nhaunew 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
0new 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
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 ];
3getFullYear[]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 ứngKhông phải
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
8new 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
Nhiều công cụ JavaScript triển khai một phương thức 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ămNgoà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 đổiTấ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
4Nế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ờ
5let date = new Date[2011, 0, 1, 2, 3, 4, 567]; alert[ date ]; // 1.01.2011, 02:03:04.567
6let date = new Date[2011, 0, 1, 2, 3, 4, 567]; alert[ date ]; // 1.01.2011, 02:03:04.567
7let date = new Date[2011, 0, 1, 2, 3, 4, 567]; alert[ date ]; // 1.01.2011, 02:03:04.567
8let date = new Date[2011, 0, 1, 2, 3, 4, 567]; alert[ date ]; // 1.01.2011, 02:03:04.567
9let date = new Date[2011, 0, 1, 2, 3, 4, 567]; alert[ date ]; // 1.01.2011, 02:03:04.567
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]// 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[] ];
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[] ];
4Như 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 đổiVí 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ỉnhVí 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 ];
0Tí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 ];
1Chú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 ];
2Khi 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 ];
3Tá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 ];
4Nế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 ];
3Có 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ạiVề 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ácNó đượ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 ];
5Nế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 ];
6Hai 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 nhauVì 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ànhMộ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 ];
8Cá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 ];
9Hã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
9 – là ngày. năm tháng ngày// if you are in timezone UTC-1, outputs 60 // if you are in timezone UTC+3, outputs -180 alert[ new Date[].getTimezoneOffset[] ];
- Ký tự
0 được sử dụng làm dấu phân cáchlet 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âylet 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.
- Phần tùy chọn
2 biểu thị múi giờ ở định dạnglet 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ấtlet 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+0let 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.
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.
7Lệnh gọi tới ____57_______8 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ề
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.
9Ví dụ
// 31 Dec 1969
let Dec31_1969 = new Date[-24 * 3600 * 1000];
alert[ Dec31_1969 ];
0Chú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”.
3 đồ vật luôn mang theo cả hai// 31 Dec 1969 let Dec31_1969 = new Date[-24 * 3600 * 1000]; alert[ Dec31_1969 ];
- 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
2 cũng được tính từ 0 [đó là Chủ nhật]let date = new Date[2013, 0, 32]; // 32 Jan 2013 ?!? alert[date]; // ...is 1st Feb 2013!
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ờ// 31 Dec 1969 let Dec31_1969 = new Date[-24 * 3600 * 1000]; alert[ Dec31_1969 ];
- 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ì
3 trở thành dấu thời gian khi được chuyển đổi thành số// 31 Dec 1969 let Dec31_1969 = new Date[-24 * 3600 * 1000]; alert[ Dec31_1969 ];
- Sử dụng
1 để lấy nhanh dấu thời gian hiện tại// if you are in timezone UTC-1, outputs 60 // if you are in timezone UTC+3, outputs -180 alert[ new Date[].getTimezoneOffset[] ];
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 ];
2Nú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