วันที่และเวลาเป็นหลักสูตรบังคับที่ไม่สามารถข้ามได้ในกระบวนการเขียนโปรแกรม โชคดี JavaScript
ได้เตรียมวัตถุวันที่ (วันที่) ในตัวสำหรับเรา เราสามารถสร้าง จัดเก็บ แก้ไข วัดเวลา พิมพ์ และการทำงานพื้นฐานอื่นๆ ผ่านอ็อบเจ็กต์นี้ เป็นหนึ่งในหลักสูตรที่จำเป็นสำหรับโปรแกรมเมอร์ JavaScript
ทุกคน
นั้นเหมือนกับวัตถุทั่วไป เราสามารถใช้ new Date()
เพื่อสร้างวัตถุ Date
และเรายังสามารถส่งผ่านพารามิเตอร์การเริ่มต้นบางอย่างในระหว่างการสร้างได้อีกด้วย
โดยไม่มีพารามิเตอร์:
la now = new Date()console.log(now)
ผลลัพธ์การเรียกใช้โค้ดจะเป็นดังนี้:
นี่เป็นเพียงเอาท์พุตเวลาที่กำหนดเมื่อมีการเรียกใช้โค้ด สิ่งที่แสดงที่นี่คือ 2022年6月22日19点25份24秒
สร้างออบเจ็กต์วันที่ด้วยพารามิเตอร์มิลลิวินาที โดยที่ milliseconds
อ้างอิงถึงจำนวนมิลลิวินาทีตั้งแต่ UTC+0 ในวันที่ 1 มกราคม 1970 (1 มิลลิวินาที = 1/1000 วินาที)
//สร้างเวลา เช่น 1970.1.1 จุดเวลา 0 มิลลิวินาที ให้ jan01_1970 = วันที่ใหม่ (0) console.log(01_1970) //สร้างเวลาที่ช้ากว่าจุดเวลา 1.1 ในปี 1970 3 วัน (3 วัน * 24 ชั่วโมง * 3600 วินาที * 1,000 มิลลิวินาที) ให้ jan04_1970 = วันที่ใหม่ (3 * 24 * 3600 * 1,000) Console.log(jan04_1970)
ผลลัพธ์การเรียกใช้โค้ด:
milliseconds
คือจำนวนมิลลิวินาทีที่ผ่านไปนับตั้งแต่ 00:00:00 น. ของวันที่ 1 มกราคม 1970 หรือเรียกว่า การประทับเวลา
การประทับเวลาคือการแสดงวันที่แบบดิจิทัลอย่างง่าย เรามักจะใช้ new Date(milliseconds)
เพื่อสร้างวันที่ หากเรามีวัตถุ Date
อยู่แล้ว เราสามารถใช้ date.getTime()
เพื่อรับการประทับเวลาที่สอดคล้องกับวันที่
หมายเหตุ:
จีนอยู่ในโซน 8 ดังนั้นเวลาในตัวอย่างข้างต้นไม่ใช่ 00:00:00 น. แต่เป็น 08:00:00 น
การประทับเวลาไม่ได้เป็นเพียงจำนวนเต็มเท่านั้น แต่ยังอาจเป็นจำนวนลบได้ด้วย เช่น:
//1969-12-31 00:00:00let dec31_1969 = new Date(-24 * 3600 * 1000)console.log(dec31_1969)
code ผลการดำเนินการ:
ใช้การประทับเวลาทุกครั้งที่สร้างขึ้น อาจไม่สะดวก เนื่องจากการคำนวณการประทับเวลายังยากอยู่เล็กน้อย
นอกจากนี้เรายังสามารถใช้สตริงเวลาเพื่อสร้างเวลาได้ เช่น:
la date = new Date('2022-06-22 00:00:00') console.log(date)
code Execution results:
year
—— ต้องเป็นตัวเลขสี่หลัก;month
—— [0,11]
, 0
หมายถึง1
;hours/minutes/sec/ms
- ค่าเริ่มต้นคือ 0;ตัวอย่างเช่น:
ให้ date = new Date(2022,6,22,20,35,33)console.log(date)
ผลการเรียกใช้โค้ด:
นอกจากนี้เรายังสามารถระบุจำนวนมิลลิวินาทีได้อีกด้วย:
la date = new Date(2022,6,22,20,35,33,777)console.log(date)
ถ้าเรามี Date
object เราก็สามารถส่งผ่าน build ได้
-ในเมธอด Date
จะได้รับส่วนของเวลา เช่น ปี เดือน วันที่ เป็นต้น
ตัวอย่างเช่น เรามี date
:
la date = new Date(2022,5,22,20,35,33)
getFullYear()
รับปี date.getFullYear()
รับกลับ 2022
;getMonth()
รับ month, date.getMonth()
ส่งคืน 5
ซึ่งก็คือ 6
;getDate()
รับวันที่ของเดือนปัจจุบัน date.getDate()
ส่งคืน 22
;getDay()
รับวันในสัปดาห์ตามเวลาปัจจุบันเป็น date.getDay()
ที่ date.getDay()
ส่งคืน 3
;หมายเหตุ:
- วันที่ข้างต้นทั้งหมดขึ้นอยู่กับวันที่ในท้องถิ่น ตัวอย่างเช่น ฉันอยู่ในเขตเวลาของจีน
- คุณต้องใช้
getFullYear
จะส่งคืนปีgetYear
เป็นตัวเลขสองหลัก
เรายังสามารถรับเวลาในโซนเวลา 0
ซึ่งก็คือเวลา UTC
ซึ่งสอดคล้องกับ getUTCFullYear()
และ getUTCMonth()
, getUTCDay
เป็นต้น เพียงใส่ UTC
หลังจาก get
.
ตัวอย่างเช่น:
la date = new Date(2022,5,22,20,35,33)console.log(date.getHours(),date.getUTCHours())
ผลลัพธ์การเรียกใช้โค้ด:
ในเวลากลางคืนจะเห็นได้ว่าความแตกต่างระหว่างเขตเวลาของจีนและเขตเวลา 0
คือ 8
ชั่วโมง
getTime()
ส่งคืนการประทับเวลาของวันที่ และเมธอดไม่มีโหมด UTC
getTimezoneOffset()
ส่งคืนค่าความต่างของเวลาระหว่างโซนเวลาท้องถิ่นและโซนเวลา 0
เป็นนาที และไม่มีโหมด UTC
เรายังสามารถตั้งวันที่ด้วยวิธีของวัตถุ Date
ส่วนหนึ่งของ:
setFullYear(year, [month], [date])
ตั้งค่าปี (เดือน, วัน)setMonth(month, [date])
ตั้งเดือน (วัน)setDate(date)
ตั้งวันที่ (วันของเดือน)setHours(hour, [min], [sec], [ms])
ตั้งชั่วโมง (นาที วินาที มิลลิวินาที)setMinutes(min, [sec], [ms])
ตั้งค่านาที (วินาที มิลลิวินาที)setSeconds(sec, [ms])
ตั้งค่าวินาที (มิลลิวินาที)setMilliseconds(ms)
ตั้งค่ามิลลิวินาทีsetTime(milliseconds)
(ใช้จำนวนมิลลิวินาทีตั้งแต่ 1970-01-01 00:00:00 UTC+0
เพื่อตั้งค่าวันที่ทั้งหมด)ในบรรดาฟังก์ชันข้างต้น มีเพียง setTime()
เท่านั้นที่ไม่มีตัวแปร UTC
Date
ของ JavaScript
มีฟังก์ชันการปรับเทียบอัตโนมัติ ซึ่งทำให้เราสะดวกในการคำนวณเวลาเป็นอย่างมาก
ตัวอย่างเช่น:
la date = new Date(2022,5,38)//สังเกตผลการดำเนินการของโค้ด 38console.log(date) ที่นี่
:
จากผลการดำเนินการเราจะเห็นว่า "38 มิถุนายน 2565" ไม่ได้ทำให้เกิดข้อผิดพลาดในโปรแกรม แต่แปลงวันที่เป็น "8 กรกฎาคม 2565"
กรณีข้างต้นได้ตรวจสอบแล้วว่าใน JavaScript
วันที่นอกช่วงจะถูกกำหนดโดยอัตโนมัติโดยอ็อบเจ็กต์ Date
ด้วยวิธีนี้ เราสามารถใช้วัตถุ Date
เพื่อคำนวณวันที่ได้อย่างสะดวกมาก
เช่น เราสามารถบวกและลบปี เดือน และวันในวันที่ดังกล่าวได้:
la date = new Date(2022,5,23)//The current time is 2022-6-23date.setDate(date.getDate() + 8)//คำนวณเวลาหลังจากแปดวัน
ผลการเรียกใช้โค้ด console.log(date):
ในทำนองเดียวกัน เรายังสามารถใช้เมธอด date.setSeconds()
เพื่อคำนวณวันที่เป็นวินาทีได้ด้วย
และวัน Date
จะเหมือนกับค่าที่ส่งคืนของ date.getTime()
ซึ่งเป็นค่าในหน่วยมิลลิวินาที:
la date = new Date()console.log(+date)
code ผลการดำเนินการ:
เนื่องจากแก่นแท้ของเวลาคือตัวเลข เราจึงสามารถคำนวณผลต่างของเวลาเป็น ms
(มิลลิวินาที) ได้
ตัวอย่างเช่น:
ให้ date1 = new Date(2022,5,23)let date2 = new Date(2022,5,24)console.log(`The timeความแตกต่างคือ ${date2-date1}ms`)
ผลการเรียกใช้โค้ดคือ : :
ถ้าเราต้องการทราบเวลาปัจจุบัน วิธีที่ดีกว่าคือใช้เมธอด Date.now()
วิธีนี้จะส่งคืนการประทับเวลาของเวลาปัจจุบันโดยไม่ต้องสร้างวัตถุ Date
เพิ่มเติม ซึ่งดีสำหรับโอเวอร์เฮดของหน่วยความจำและการรวบรวมขยะ และโค้ดจะง่ายกว่า
ตัวอย่างเช่น:
ให้ start = Date.now()for(let i = 1;i<100000;i++){ ให้ num = i * i * i;}let end = Date.now()console.log(`consume time ${end - beginning}ms`)
ผลการรันโค้ด:
เมธอด Date.parse()
สามารถอ่านสตริงวันที่และแปลงเป็นการประทับเวลาได้ แต่สตริงจะต้องเป็นไปตามกฎบางอย่าง: YYYY-MM-DDTHH:mm:ss.sssZ
YYYY-MM-DD
สอดคล้องกับ年-月-日
T
อยู่ในตัวคั่นHH:mm:ss.sss
สอดคล้องกับ时:分:秒.毫秒
Z
สามารถเป็นเขตเวลาในรูปแบบ +-hh:mm
อักขระ Z
ตัวเดียวแสดง UTC+0
สตริง UTC+0 ที่สามารถเขียนในรูปแบบย่อ เช่น: YYYY-MM-DD
, YYYY-MM
, YYYY
เพื่อให้เคล็ดลับเล็กๆ น้อยๆ แก่คุณ:
ให้ ms = Date.parse('2022-06-23T19:38:30.777+08:00')//Time stamp la date = new Date(ms)console.log(date)
code Execution ผลลัพธ์:
JavaScript
วัตถุ Date
เพื่อประมวลผลเวลา: new Date()
;Date
มีวิธีการปฏิบัติมากมายและเราจะได้รับช่วงระยะเวลาหนึ่งDate
จะถูกปรับเทียบโดยอัตโนมัติและเราสามารถทำได้ เพิ่มและลบวันที่โดยตรงDate.now()
สามารถรับเวลาปัจจุบันได้อย่างมีประสิทธิภาพ