สิ่งหนึ่งที่เราสามารถทำได้เมื่อแก้ปัญหาการเข้ารหัสคือใช้ Date Object เพื่อเปรียบเทียบวันที่และเวลาเพื่อแสดงตรรกะบางอย่างในโค้ดของเราตามเงื่อนไข บทความนี้กล่าวถึงวิธีใช้ออบเจ็กต์วันที่เพื่อเปรียบเทียบวันที่สองวันเพื่อดูว่าวันใดเป็นวันที่หลัง (หรือก่อนหน้า)
การตั้งค่า
JavaScript มีอ็อบเจ็กต์วันที่ในตัวที่เราสามารถใช้เพื่อเข้าถึงเมธอดที่สามารถช่วยเราทำตรรกะตามการประทับเวลาได้ ในการตั้งค่านี้ ให้สร้างอินสแตนซ์ Date ใหม่โดยเข้ารหัสข้อมูลต่อไปนี้:
const date = new Date("09-20-2020"); //2020-09-20T07:00:00.000Z
หากคุณต้องป้อน console.log(date) เวลา (สตริงย่อยหลัง T) จะแตกต่างกันไปตามสถานที่ที่คุณอาศัยอยู่โดยค่าเริ่มต้น หากคุณต้องการทำงานกับเวลา UTC ให้ลบ Z และเพิ่ม +HH:MM หรือ -HH:MM แทนที่.
การทราบวิธีตั้งค่านี้มีความสำคัญเมื่อเราใช้งานฟังก์ชันเปรียบเทียบในหัวข้อถัดไป
ต่อไป ให้ดูวิธีการที่ให้เราเมื่อใช้ตัวสร้างวันที่ วิธีหนึ่งคือ getTime() . เราใช้วิธีนี้เพื่อเปลี่ยน Date Object เป็นตัวเลขเพื่อให้สามารถเปรียบเทียบได้ง่าย
วิธีการเฉพาะนี้จะแปลงวันที่เป็นจำนวนมิลลิวินาทีนับตั้งแต่ยุคเริ่มต้น (ยุคเริ่มต้นเมื่อวันที่ 1 มกราคม 1970) นี่คือวิธี getTime ของเรา:
const date = new Date("09-20-2020")
date.getTime(); //1600585200000
เนื่องจากวันที่สร้างอินสแตนซ์เป็นวัตถุวันที่ใหม่ เราจึงสามารถใช้เครื่องหมายจุดเพื่อเข้าถึงฟังก์ชัน getTime
ฉันแนะนำให้ตรวจสอบเอกสารสำหรับวิธีการประเภทต่างๆ ทั้งหมดที่คุณสามารถใช้บนออบเจ็กต์วันที่สำหรับตรรกะของคุณ ตอนนี้เราพร้อมแล้วที่จะจัดการกับความต้องการของเรา
81% ของผู้เข้าร่วมกล่าวว่าพวกเขารู้สึกมั่นใจมากขึ้นเกี่ยวกับโอกาสในการทำงานด้านเทคโนโลยีหลังจากเข้าร่วม bootcamp จับคู่กับ Bootcamp วันนี้
ผู้สำเร็จการศึกษาจากหลักสูตร bootcamp โดยเฉลี่ยใช้เวลาน้อยกว่าหกเดือนในการเปลี่ยนอาชีพ ตั้งแต่เริ่มต้น bootcamp ไปจนถึงหางานแรก
พร้อมรับคำ
ระบุสองสตริงและตัวดำเนินการเปรียบเทียบ ให้ส่งกลับวันที่ที่น้อยที่สุดหรือมากที่สุดขึ้นอยู่กับตัวดำเนินการที่ให้มา รับประกันได้ว่าสตริงที่ส่งผ่านทั้งสองสายสามารถเปลี่ยนเป็น Date Object ได้
ขั้นตอนในการแก้ปัญหา
- เปลี่ยนสตริงทั้งสองเป็น Date Objects ใหม่ อย่าลืมตรวจสอบวิธีส่งพารามิเตอร์ไปยังตัวสร้างวันที่ของคุณ!
- ใช้
getTime()วิธีสร้างจำนวนมิลลิวินาทีที่ผ่านไปตั้งแต่วันที่ 1 มกราคม 1970 - ใช้คำสั่งแบบมีเงื่อนไขหรือ ternary เพื่อหาวันที่ที่ต้องการตามที่ระบุโดยตัวดำเนินการเปรียบเทียบที่ส่งผ่าน
- แปลงมิลลิวินาทีเป็นสตริงวันที่ที่อ่านได้และส่งคืน
พยายามแก้ปัญหาด้วยตัวเองก่อนที่จะอ้างอิงถึงวิธีแก้ปัญหา!
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<style>
body {
font-family: 'Roboto', Courier, monospace
}
</style>
</head>
<body>
<h1>Date Comparison</h1>
<label for="comparison">Comparison (Choose One)</label>
<div id="comparison" value="more.value">
<input name="compare" type="radio" id="less" value=""/>
<label for="less"> < </label>
<input name="compare" type="radio" id="more" checked value=""/>
<label for="more"> >= </label>
</div>
<br/>
<label for="date-1">Date 1:</label>
<input id="date-1" value="" type="date" name="date1" />
<label for="date-2">Date 2:</label>
<input id="date-2" value="" type="date" name="date2" />
<input id="submit-button" type="submit" />
<div id="demo"></div>
<script>
const handleSubmit = (date1, date2, compare) => {
//to compare : getTime of each date
date1Arr = date1.split("-");
date2Arr = date2.split("-");
//year, month (month is zero-based), day
let d1 = new Date(date1Arr[0], date1Arr[1] - 1, date1Arr[2]).getTime();
let d2 = new Date(date2Arr[0], date2Arr[1] - 1, date2Arr[2]).getTime();
// getTime gets the number of milliseconds since Jan 1 1970. So the higher the number, the later the date.
//use conditional or ternary to return Comparison
let timeDisplay;
if(compare === ">=") {
timeDisplay = d1 >= d2 ? d1 : d2;
} else {
timeDisplay = d1 < d2 ? d1 : d2;
}
let timetoDisplay = new Date(timeDisplay);
document.getElementById("demo").innerHTML = timetoDisplay.toDateString();
}
let date_1 = document.getElementById("date-1");
let date_2 = document.getElementById("date-2");
document.getElementById("submit-button").addEventListener("click", (e) => handleSubmit(date_1.value, date_2.value, more.checked ? '>=' : '<'))
</script>
</body>
</html>
วันที่ใน JavaScript อาจสร้างความสับสนในตอนแรก แต่ด้วยการฝึกฝนเพียงเล็กน้อย คุณจะได้รับมันในเวลาไม่นาน ที่นี่ เราได้ดูวิธีตั้งค่าวันที่ใหม่ใน JavaScript และเข้าถึงวิธีการบนตัวสร้าง นอกจากนี้เรายังได้ดูวิธีเปรียบเทียบวันที่สองวันเพื่อดูว่าวันใดมีค่ามากที่สุดหรือน้อยที่สุดโดยขึ้นอยู่กับโอเปอเรเตอร์ที่ส่งผ่านไปยังฟังก์ชัน
เมื่อคุณเข้าใจสิ่งนี้แล้ว ฉันขอแนะนำให้ดูวิธีจัดเรียงอาร์เรย์ของรายการตามวันที่ที่เพิ่มลงในอาร์เรย์ จากน้อยไปมากหรือมากไปหาน้อย ขอให้สนุกและทำมันต่อไป!