Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript 날짜 개체:날짜를 비교하는 방법

코딩 문제를 해결할 때 할 수 있는 한 가지는 날짜 개체를 사용하여 날짜와 시간을 비교하여 코드의 특정 논리를 조건부로 렌더링하는 것입니다. 이 기사에서는 날짜 개체를 사용하여 두 날짜를 비교하여 어느 날짜가 이후(또는 이전) 날짜인지 확인하는 방법을 살펴봅니다.

설정

JavaScript에는 타임스탬프를 기반으로 논리를 수행하는 데 도움이 되는 메서드에 액세스하는 데 사용할 수 있는 내장된 날짜 개체가 있습니다. 이를 설정하려면 다음을 코딩하여 새 날짜를 인스턴스화하십시오.

const date = new Date("09-20-2020"); //2020-09-20T07:00:00.000Z

console.log(date)를 입력했다면 , 시간(T 뒤의 부분 문자열)은 기본적으로 거주 지역에 따라 다릅니다. UTC 시간으로 작업하려면 Z를 제거하고 +HH:MM을 추가하세요. 또는 -HH:MM 대신에.

이것을 설정하는 방법을 아는 것은 다음 섹션에서 비교 기능으로 작업할 때 중요합니다.

다음으로 Date 생성자를 사용할 때 제공되는 메소드를 살펴보십시오. 그러한 방법 중 하나는 getTime()입니다. . 이 메서드를 사용하여 Date 개체를 쉽게 비교할 수 있도록 숫자로 변경합니다.

이 특정 방법은 날짜를 epoch가 시작된 이후의 밀리초 수로 변환합니다(epoch는 1970년 1월 1일에 시작됨). getTime 메소드는 다음과 같습니다.

const date = new Date("09-20-2020")
   date.getTime(); //1600585200000

날짜가 새 날짜 개체로 인스턴스화되기 때문에 점 표기법을 사용하여 getTime 함수에 액세스할 수 있습니다.

나는 당신의 논리에 대한 날짜 개체에 사용할 수 있는 모든 다양한 유형의 방법에 대한 문서를 확인하는 것이 좋습니다. 이제 프롬프트를 처리할 준비가 되었습니다.

참가자의 81%는 부트캠프에 참석한 후 기술 직업 전망에 대해 더 자신감을 느꼈다고 말했습니다. 지금 부트캠프에 참여하십시오.

부트캠프 졸업생은 부트캠프 시작부터 첫 직장을 찾는 데까지 6개월도 채 걸리지 않았습니다.

프롬프트

두 개의 문자열과 비교 연산자가 주어지면 주어진 연산자에 따라 가장 작거나 큰 날짜를 반환합니다. 전달된 두 문자열이 날짜 개체로 변환될 수 있음이 보장됩니다.

해결 단계

  1. 두 문자열을 새 날짜 개체로 변경합니다. Date 생성자에 매개변수를 전달하는 방법을 조사하는 것을 잊지 마십시오!
  2. getTime() 사용 1970년 1월 1일 이후 경과된 밀리초 수를 생성하는 메소드입니다.
  3. 조건문 또는 삼항을 사용하여 전달된 비교 연산자가 나타내는 날짜를 파악합니다.
  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에서 새 날짜를 설정하고 해당 생성자의 메서드에 액세스하는 방법을 살펴보았습니다. 또한 함수에 전달된 연산자에 따라 가장 큰 날짜와 가장 작은 날짜를 확인하기 위해 두 날짜를 비교하는 방법을 살펴보았습니다.

이에 대한 처리가 완료되면 항목이 배열에 추가된 날짜(오름차순 또는 내림차순)를 기준으로 항목 배열을 정렬하는 방법을 살펴보는 것이 좋습니다. 재미를 가지고 계속!