Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

JavaScript Date Object:วิธีเปรียบเทียบวันที่

สิ่งหนึ่งที่เราสามารถทำได้เมื่อแก้ปัญหาการเข้ารหัสคือใช้ 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 ได้

ขั้นตอนในการแก้ปัญหา

  1. เปลี่ยนสตริงทั้งสองเป็น Date Objects ใหม่ อย่าลืมตรวจสอบวิธีส่งพารามิเตอร์ไปยังตัวสร้างวันที่ของคุณ!
  2. ใช้ getTime() วิธีสร้างจำนวนมิลลิวินาทีที่ผ่านไปตั้งแต่วันที่ 1 มกราคม 1970
  3. ใช้คำสั่งแบบมีเงื่อนไขหรือ ternary เพื่อหาวันที่ที่ต้องการตามที่ระบุโดยตัวดำเนินการเปรียบเทียบที่ส่งผ่าน
  4. แปลงมิลลิวินาทีเป็นสตริงวันที่ที่อ่านได้และส่งคืน

พยายามแก้ปัญหาด้วยตัวเองก่อนที่จะอ้างอิงถึงวิธีแก้ปัญหา!

<!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"> &lt; </label>
      <input name="compare" type="radio" id="more" checked value=""/>
          <label for="more"> &gt;= </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 และเข้าถึงวิธีการบนตัวสร้าง นอกจากนี้เรายังได้ดูวิธีเปรียบเทียบวันที่สองวันเพื่อดูว่าวันใดมีค่ามากที่สุดหรือน้อยที่สุดโดยขึ้นอยู่กับโอเปอเรเตอร์ที่ส่งผ่านไปยังฟังก์ชัน

เมื่อคุณเข้าใจสิ่งนี้แล้ว ฉันขอแนะนำให้ดูวิธีจัดเรียงอาร์เรย์ของรายการตามวันที่ที่เพิ่มลงในอาร์เรย์ จากน้อยไปมากหรือมากไปหาน้อย ขอให้สนุกและทำมันต่อไป!