原生JS獲取日期段及時間比較的騷操作(基本操作)

2021-09-24 06:37:35 字數 1617 閱讀 2735

日常開發中,經常會遇到以下對於時間(日期)的操作需求:

路人甲大佬: 為啥不用day.js或者moment.js這些現成的庫

現在最流行的day.js輕量庫以及moment.js都可以實現以上功能,但是moment.js有12kb大小,day.js僅僅2kb大小,為了時間資料的格式化引入day.js完全沒有問題,但是後兩個功能的實現需要引入moment.js,作者認為還不如自己寫一套。

此功能無非呼叫原生js的date物件的getfullyear()getmonth()getdate()等方法獲取值之後的拼接,在這裡不做贅述

之前作者開發中只碰到了比較兩段日期的先後順序作校驗,所以採取了以下本辦法

demo 1 - 比較兩天大小(笨辦法)

const day1 = '2018-11-12'

const day2 = '2018-10-22'

function

comparedate (day1, day2)

console.log(comparedate(day1, day2)) // the day2 is earlier than the day1

複製**

問題:這種方法雖然達到了比較兩個日期的大小,但是其中的差值是需要進一步處理的,不是很嚴謹,而且涉及要計算小時的差值,則完全沒有辦法使用

demo 1 - 比較兩天大小(利用換算成距 1970 年 1 月 1 日之間的毫秒數)

function

newcomparedate (day1, day2)

console.log(newcomparedate(day1, day2)) // the day2 is earlier than the day1

複製**

利用js提供的gettime()方法換算成「距 1970 年 1 月 1 日之間的毫秒數」然後進行差值計算,如果要得到小時數或者天數,則進行進一步計算即可

demo 2

function

getalldatearr (begin, end)

return arr

}getalldatearr('2018-11-12', '2018-12-12')

複製**

以上功能除了day.js之外,其他功能如果引入moment.js則差不多需要14kb記憶體大小,但自己實現不到20行**則可以實現功能,所以依賴第三方庫有時候可以考慮自己手動實現。

作者在之前的乙個國際專案中碰到乙個問題:在國內前端處理好資料傳送到後端,後端儲存後如果在其他時區獲取使用此時間,會出現時間顯示的誤差,原因是因為前後端時區不統一的問題,當時的解決方案是前端解決,前端只要在儲存及顯示的時候,獲取本地的時區然後進行時間的換算即可。

by--lucaljx (lucaljx的github)

iOS 獲取系統時間 及 時間比較

簡單記錄一下ios裡面獲取系統時間的方法。nsstring date nsdateformatter formatter nsdateformatter alloc init formatter setdateformat yyyy mm dd hh mm ss date formatter str...

js日期時間比較函式

js日期比較 yyyy mm dd function duibi a,b else return true js時間比較 yyyy mm dd hh mi ss function comptime else if a 0 else if a 0 else var lktime new date ar...

python日期處理及時間的比較

python 種處理日期我們經常使用datetime模組 from datetime import datetime datetime.strftime datetime.now h m out 13 50 datetime.strptime 8 44 h m out datetime.dateti...