JavaScript Date 時間和日期-學習筆記
Date
物件可以用來做日期與時間的相關操作。
宣告 Date 物件 (Creating Date Object)
let day = new Date()
建立特定時間點的 Date (value) 物件
傳入的參數是個數值 value,數值從 1970年1月1日00:00:00 UTC (格林威治標準時間) ,開始累計至到某個時間點的毫秒數 milliseconds
。
new Date(1581361526000) //Tue Feb 11 2020 03:05:26 GMT+0800
建立特定時間點的 Date 物件 — 傳入多個數字,指定年、月、日、時、分、秒、毫秒
new Date(year, month [, day [, hours [, minutes [, seconds [, milliseconds]]]]]);
如以下範例:
new Date(1988, 3, 15, 10, 22 , 15) //Fri Apr 15 1988 10:22:15 GMT+0800
- 參數
hours
: 使用 24小時制。 - 參數
month
: 表達月份從0~11
,如0
是 1 月,11
是 12月。 - 可以只輸入年、月、日,之後省略,並自動預設為 0,如下:
new Date(1988, 3, 15) //Fri Apr 15 1988 00:00:00 GMT+0800
注意在輸入數值時,如超出時間的範圍會自動增減及進位,例如: new Date(2019, 13, 1)
會改成 new Date(2019, 1, 1)
記得 1
是 2月,new Date(2019, 11, 1, 10, 11, 70)
會改成 new Date(2019, 11, 1, 10, 11, 10)
,70 秒改成 10 秒。
日期時間比較 (Compare Dates)
可以用比較運算子來作比較,>、<、> =、< =
等
let today=new Date()
let someday=new Date(2019 , 10, 1)if(today > someday) console.log(`今天日期是${today}`)
// 今天日期是Sat Apr 25 2020 16:28:42 GMT+0800
但如果要比較兩個日期與時間,運算子 ===、!==
而是要先將 Date()
物件使用date.getTime()
轉換數值型別才可比較。
let today=new Date()
let someday=new Date(2019 , 10, 1)today.getTime() === someday.getTime() //false
today.getTime() !== someday.getTime() //true
Date.length 屬性
數值是7,代表參數共有7個如下:
(year, month, day, hours, minutes, seconds, milliseconds)
Date 物件提供的方法 (Methods)
Date.now()
- 取得從 1970–01–01 00:00:00 ,開始累計到現在的毫秒數。
Date.now() // 1587811443081
Date.parse(dateString)
- 將日期時間字串轉成數字型態,數字是從 1970–01–01 00:00:00 ,開始累計到現在的毫秒數。
- 參數
dateString
: 須符合 RFC2822 與 ISO 8601 格式,否則回傳NaN
。 - 它的背後其實執行
new Date()
物件。 - 注意
MM-DD
,如果月與日只有輸入個位數時,會發生錯誤。例如:1
須寫成01
。
YYYY-MM-DD
Date.parse('2019-11-1') // 1572537600000
YYYY-MM (DD預設為1)
Date.parse('2019-11') // 1572566400000
YYYY(MM-DD預設為1)
Date.parse('2019') // 1546300800000
YYYY-MM-DDTHH:MM:SS(T代表UTC時間)
Date.parse('2019-11-01T10:30:33') // 1572575433000
MM/DD/YYYY
Date.parse('10/1/2019') // 1569859200000
使用完整的日期時間格式
Date.parse('Sat Apr 25 2020 16:28:42 GMT+0800') // 1587803322000
取得日期和時間相關的方法
Date.prototype.getFullYear()
- 取得
Date
物件的年份。
let date = new Date('Sat Apr 25 2019 16:28:42 GMT+0800')
date.getFullYear() // 2019
Date.prototype.getMonth()
- 取得
Date
物件的月份,月份是從0
開始至11
。
let date=new Date('3/25/2019 16:28:42 GMT+0800')
date.getMonth() // 2
Date.prototype.getDate()
- 取得
Date
物件的日期。
let date=new Date('3/25/2019 16:28:42 GMT+0800')
date.getDate() // 25
Date.prototype.getHours()
- 取得
Date
物件的小時,從0~23
小時。
let date=new Date('3/25/2019 23:28:42 GMT+0800')
date.getHours() // 23
Date.prototype.getMinutes()
- 取得
Date
物件的分鐘,從0~59
分鐘。
let date=new Date('3/25/2019 23:28:42 GMT+0800')
date.getMinutes() // 28
Date.prototype.getSeconds()
- 取得
Date
物件的秒數,從0~59
秒。
let date=new Date('3/25/2019 23:28:59 GMT+0800')
date.getSeconds() // 59
Date.prototype.getMilliseconds()
- 取得
Date
物件的毫秒數,從000~999
毫秒。
let date=new Date('3/25/2019 23:28:59:456 GMT+0800')
date.getMilliseconds() // 456
Date.prototype.getDay()
- 取得
Date
物件的星期,從0~6
,0
代表星期日,1
代表星期一,依此類推 。
let date=new Date('3/31/2019 23:28:59:123 GMT+0800')
date.getDay() // 0
Date.prototype.getTime()
- 取得
Date
物件從 1970–01–01 00:00:00 ,開始累計到現在的毫秒數。
let date=new Date('3/31/2019 23:28:59:123 GMT+0800')
date.getTime() // 1554046139123
設定日期和時間相關的方法
Date.prototype.setFullYear(yearValue[, monthValue[, dayValue]])
- 設定
Date
物件的年份。 - 參數
yearValue
:設定年份的數值。
let date=new Date('3/31/2019 23:28:59:123 GMT+0800')
date.setFullYear(2020)
date.getFullYear() // 2020
Date.prototype.setMonth(monthValue[, dayValue])
- 設定
Date
物件的月份。 - 參數
monthValue
:設定月份的數值,月份是從0
開始至11
。
let date=new Date('3/31/2019 23:28:59:123 GMT+0800')
date.setMonth(4)
date.getMonth() // 4
date //Fri May 31 2019 23:28:59 GMT+0800
Date.prototype.setDate(dayValue)
- 設定
Date
物件的日期。 - 參數
dayValue
:設定日期的數值。
let date=new Date('3/31/2019 23:28:59:123 GMT+0800')
date.setDate(4)
date.getDate() // 4
date //Mon Mar 04 2019 23:28:59 GMT+0800
Date.prototype.setHours(hoursValue[, minutesValue[, secondsValue[, msValue]]])
- 設定
Date
物件的小時。 - 參數
hoursValue
:設定小時的數值,從0~23
小時。
let date=new Date('3/31/2019 23:28:59:123 GMT+0800')
date.setHours(10)
date.getHours() // 10
date //Sun Mar 31 2019 10:28:59 GMT+0800
Date.prototype.setMinutes(minutesValue[, secondsValue[, msValue]])
- 設定
Date
物件的分鐘。 - 參數
minutesValue
:設定分鐘的數值,從00~59
分鐘。
let date=new Date('3/31/2019 23:28:59:123 GMT+0800')
date.setMinutes(59)
date.getMinutes() // 59
date //Sun Mar 31 2019 23:59:59 GMT+0800
Date.prototype.setSeconds(secondsValue[, msValue])
- 設定
Date
物件的秒數。 - 參數
secondsValue
:設定秒數的數值,從00~59
秒。
let date=new Date('3/31/2019 23:28:59:123 GMT+0800')
date.setSeconds(9)
date.getSeconds() // 9
date //Sun Mar 31 2019 23:28:09 GMT+0800
Date.prototype.setMilliseconds(msValue)
- 設定
Date
物件的毫秒。 - 參數
secondsValue
:設定毫秒的數值,從000~999
毫秒。
let date=new Date('3/31/2019 23:28:59:123 GMT+0800')
date.setMilliseconds(989)
date.getMilliseconds() // 989
Date.prototype.setTime(timeValue)
- 設定
Date
物件從 1970–01–01 00:00:00 ,開始累計到現在的毫秒數。 - 參數
timeValue
:設定的數值。
let date=new Date()
date.setTime(1587777166060)
date //Sat Apr 25 2020 09:12:46 GMT+0800
Date.prototype.toString()
- 回傳
Date
物件的字串。
let date=new Date('3/31/2019 23:28:59:123 GMT+0800')
date.toString() //"Sun Mar 31 2019 23:28:59 GMT+0800"
Date.prototype.valueOf()
- 回傳
Date
物件的原始值。
let date=new Date('3/31/2019 23:28:59:123 GMT+0800')
date.valueOf() //1554046139123
UTC 時區相關的操作
它是另一種設定與取得時區的方法,與上述一樣但時區不同,時區是UTC。
參考:Date
以上是我對 Date 時間和日期 的學習筆記 😉。
***如果有任何想法,也歡迎留言與我分享~***