JS Date物件及日期處理的坑

2021-09-12 02:27:10 字數 4108 閱讀 2932

2. date物件

(2) 例項方法

(3) 靜態方法

3. date物件、日期字串、時間戳之間的轉換

不要這樣寫new date('2019-3-5'),會出bug。這個string格式為yyyy-m-d。

在ios手機和safari瀏覽器上,這個格式會報錯,改為yyyy-mm-dd,即new date('2019-03-05')是可以的,用/也是可以的,即new date('2019/3/5')

下圖為safari的結果:

但是,有一些資料提到用』-'連線的日期字串在ie上轉換會失敗,試過之後發現並不會,不確定是不是因為ie版本問題。

(1) 日期字串用/的格式

不管是yyyy/mm/dd還是yyyy/m/d,都可。

var str =

'2019-3-5'

;str = str.

split

('-').

join

('/');

//或: str.replace(new regexp(/-/g),'/')

var date =

newdate

(str)

;

(2) 使用moment.js日期處理類庫

官網:注意:建構函式返回的都是date物件。

[1] new date()

返回本地日期和時間的date物件

new

date()

//=> thu mar 07 2019 11:31:45 gmt+0800 (china standard time)

[2] new date(毫秒時間戳)

引數:毫秒時間戳(表示從1970/01/01 00:00:00為起點的毫秒數)。注意,要加上本地所在時區,因為北京是東八區,所以起始時間是1970/01/01 08:00:00

返回:date物件

new

date(0

)//=> thu jan 01 1970 08:00:00 gmt+0800 (china standard time)

[3] new date(日期字串)
new

date

('2019/03/07 07:05:01'

)//=> thu mar 07 2019 07:05:01 gmt+0800 (china standard time)

date物件的例項方法主要分為2種形式:本地時間和utc時間。例如:

var date =

newdate()

;//=> thu mar 07 2019 14:08:04 gmt+0800 (china standard time)

date.

gethours()

;//=> 14

date.

getutchours()

;//=> 6

下面列舉幾個容易混淆的:

var date =

newdate()

;//=> thu mar 07 2019 14:25:11 gmt+0800 (china standard time)

date.

getdate()

;//=> 7

date.

getday()

;//=> 4

date.

gettime()

;//=> 1551939911331

date.

valueof()

;//=> 1551939911331

[1] date.now()

返回當前日期和時間的date物件與』1970/01/01 00:00:00』之間的毫秒值(北京時間的時區為東8區,起點時間實際為:『1970/01/01 08:00:00』)

這個和new date()有什麼區別?

date.now()返回的是毫秒值new date()返回的是date物件

date.

now();

//等價於

var date =

newdate()

;date.

gettime()

;

[2] date.parse(日期字串)

字串轉換為date物件,然後返回此date物件與』1970/01/01 00:00:00』之間的毫秒值(北京時間的時區為東8區,起點時間實際為:『1970/01/01 08:00:00』)

date.

parse

('2019/03/07');

//=> 1551888000000

//等價於

var date =

newdate

('2019/03/07');

date.

gettime()

;//=> 1551888000000

上面提到的例項方法,是需要date物件的例項才可以呼叫。那不免在date物件、日期字串和毫秒上需要進行轉換。

date物件 => 日期字串

var date =

newdate()

;date.

todatestring()

;//=> "thu mar 07 2019"

date.

toutcstring()

;//=> "thu, 07 mar 2019 07:55:36 gmt"

date.

tolocalestring()

;//=> "3/7/2019, 3:55:36 pm"

date.

tolocaledatestring()

;//=> "3/7/2019"

日期字串 => date物件

var date =

newdate

('2019/03/07');

//=> thu mar 07 2019 00:00:00 gmt+0800 (china standard time)

date物件 => 時間戳

var date =

newdate()

;date.

gettime()

;//=> 1551946333499

date.

valueof()

;//=> 1551946333499

時間戳 => date物件

var date =

newdate

(1551946333499);

//=> thu mar 07 2019 16:12:13 gmt+0800 (china standard time)

日期字串 => 時間戳

date.

parse

('2019/03/07'

)//=> 1551888000000

時間戳 => 日期字串

var date =

newdate

(1551888000000);

date.

tolocaledatestring()

;//=> "3/7/2019"

其他日期處理函式請參考:

js Date 物件用於處理日期和時間。

date 物件用於處理日期和時間。建立 date 物件的語法 var mydate new date date 物件會自動把當前日期和時間儲存為其初始值。引數形式有以下 種 new date month dd,yyyy hh mm ss new date month dd,yyyy new date...

Js date日期格式處理

獲取當前時間的周一到週日 function getdates return dates console.log getdates 2020 8 24 2020 8 25 2020 8 26 2020 8 27 2020 8 28 2020 8 29 2020 8 30 當前日期減去前1小時 7天 1...

JSdate日期的本地物件導向方法總結

首先獲取系統時間 var da new date getdate 從 date 物件返回乙個月中的某一天 1 31 getday 從 date 物件返回一周中的某一天 0 6 getfullyear 從 date 物件以四位數字返回年份。getmonth 1 從 date 物件返回月份 0 11 g...