Home  >  Article  >  Web Front-end  >  Detailed explanation of Date class in javascript (code example)

Detailed explanation of Date class in javascript (code example)

不言
不言Original
2018-09-12 17:24:031951browse

This article brings you a detailed explanation (code example) of the Date class in JavaScript. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.

Date is an important built-in object in JS. Its instance is mainly used to process time and date. Its time is based on the number of milliseconds since 1970-1-1 (Universal Standard Time), and the timestamp length is 13 bits (unlike Unix timestamps which are 10 bits long). For dates and times, we have countless usage scenarios, so we need to pay special attention to some details and conventions.

1. The constructor

can be instantiated through new Date() to obtain a Date object instance. It is worth noting that if Date() is executed directly, the Get a time string.

new Date();
new Date(value);
new Date(dateString);
new Date(year, month[, day[, hour[, minutes[, seconds[, milliseconds]]]]]);

95712e0b0bc62c64b1fddfac486f9cb8

The parameter description of the constructor (refer to MDN):

  • If there is no input If there are no parameters, the Date constructor will create a Date object based on the current time set by the system.

  • If at least two parameters are provided, the remaining parameters will be set to 1 (if no day parameter is provided) or 0 by default.

  • Time in JavaScript is measured in milliseconds starting from January 1, 1970, Universal Time (UTC), and a day consists of 86,400,000 milliseconds. The range of Date objects is -100,000,000 days to 100,000,000 days (equivalent millisecond values).

  • JavaScript’s Date object provides unified behavior across platforms. The time attribute can represent the same moment in different systems, and if a local time object is used, it reflects the local time.

  • JavaScript's Date object provides several UTC time methods, and also provides local time methods accordingly. UTC, which is what we call Greenwich Time, refers to the world time standard in time. The local time refers to the time set by the client computer executing JavaScript.

  • Calling JavaScript's Date object as a function (i.e., without using the new operator) will return a string representing the current date and time.

2. Null value processing

// 以chrome为例
new Date();
// Mon Oct 23 2017 23:38:02 GMT+0800 (CST)

new Date(false);
// Thu Jan 01 1970 08:00:00 GMT+0800 (CST)

new Date(0);
// Thu Jan 01 1970 08:00:00 GMT+0800 (CST)

new Date(null);
// Thu Jan 01 1970 08:00:00 GMT+0800 (CST)

new Date('');
// Invalid Date

new Date(undefined);
// Invalid Date

3. Special reminder

[Firefox]

does not support '-' The complete time, such as new Date('2012-07-08 00:00:00') is an invalid value, while new Date('2012-07-08') is a correct value.

[month]

  • The month in new Date(year, month, ……) starts from 0

4. Value boundaries

The boundary values ​​​​are different in different execution environments. Even negative values ​​​​can be supported under Chrome. In an actual production environment, we not only need to consider the display of time, but also its storage, calculation, etc. Therefore, in specific scenarios, we need to consider the valid range of Date in the database and browser as much as possible.

Take the storage time of database Derby as an example, its boundary is:

##Maximum time24:00:00Minimum timestamp0001-01-01-00.00.00.000000Maximum timestamp9999-12-31-23.59.59.999999

In mysql, its range is defined as 1000-01-01to9999-12-31;
In js# In ##, the minimum value of the timestamp is -8640000000000000, which is April 20, 271,821 BC, and the maximum value is 8640000000000000, which is September 13, 275,760 BC. The time range in the specification is 100,000,000 days before and after 1970/1/1.

5. 2038 Bug

I heard that timestamps after 2038 are not enough.

In computer applications, the 2038 problem may cause some software to not work properly in 2038. All programs that use UNIX time to represent time will be affected by this because they represent time in terms of seconds elapsed since January 1, 1970 (ignoring leap seconds). This time representation is a standard on Unix-like operating systems and affects software developed in the C programming language for use on most other operating systems. On most 32-bit operating systems, the "time_t" data pattern uses a signed 32-bit integer (signedint32) to store the calculated number of seconds. According to the "time_t" standard, the last time that can be represented in this format is Tuesday, January 19, 2038, 03:14:07 (UTC). Beyond this moment, the time will be wrapped around and represented internally as a negative number, causing programs to fail to work because they will not recognize this time as 2038 and may jump back depending on the implementation. 1970 or 1901. Wrong calculations and actions may result.

7. Library

  • moment - A heavyweight time processing library that supports time parsing, formatting, calculation, etc. It has powerful functions, supports browsers and Node.js, and has a compressed volume About 16.3 KB

  • date-fns - a more lightweight event processing library than moment, smaller in size

  • dayjs - lighter Magnitude moment.js

Related recommendations:

Sample code sharing for encapsulating Date date class in javascript

javascript DOM sample code detailed explanation

Explanation Boundary value
Minimum date 0001-01-01
Maximum date 9999-12-31
Minimum time 00:00:00

The above is the detailed content of Detailed explanation of Date class in javascript (code example). For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn