시간대 포함 날짜를 ISO 형식으로 변환하기

Beginner

This tutorial is from open-source community. Access the source code

소개

이 랩에서는 시간대 오프셋을 포함하여 날짜를 확장된 ISO 형식 (ISO 8601) 으로 변환하는 방법을 배웁니다. Date.prototype.getTimezoneOffset() 메서드를 사용하여 시간대 오프셋을 얻고 반전시킬 것입니다. 그런 다음, 전달된 모든 숫자를 정수로 정규화하고 String.prototype.padStart()를 사용하여 2 자리로 채우는 도우미 함수를 정의합니다. 마지막으로, Date 프로토타입의 내장 메서드를 사용하여 시간대 오프셋이 있는 ISO 8601 문자열을 구성합니다. 이 랩을 마치면 JavaScript 에서 날짜를 조작하는 방법에 대한 이해도가 높아질 것입니다.

시간대를 포함한 날짜를 ISO 형식으로 변환하기

시간대 오프셋을 포함하여 날짜를 확장된 ISO 형식 (ISO 8601) 으로 변환하려면 다음 단계를 따르세요.

  1. 터미널/SSH 를 열고 node를 입력하여 코딩을 시작합니다.
  2. Date.prototype.getTimezoneOffset()을 사용하여 시간대 오프셋을 얻고 반전시킵니다. 부호를 diff에 저장합니다.
  3. Math.floor()Math.abs()를 사용하여 전달된 모든 숫자를 정수로 정규화하고 String.prototype.padStart()를 사용하여 2자리로 채우는 도우미 함수 pad()를 정의합니다.
  4. pad()Date 프로토타입의 내장 메서드를 사용하여 시간대 오프셋이 있는 ISO 8601 문자열을 구성합니다.

다음은 사용할 수 있는 코드입니다.

const toISOStringWithTimezone = (date) => {
  const tzOffset = -date.getTimezoneOffset();
  const diff = tzOffset >= 0 ? "+" : "-";
  const pad = (n) => `${Math.floor(Math.abs(n))}`.padStart(2, "0");
  return (
    date.getFullYear() +
    "-" +
    pad(date.getMonth() + 1) +
    "-" +
    pad(date.getDate()) +
    "T" +
    pad(date.getHours()) +
    ":" +
    pad(date.getMinutes()) +
    ":" +
    pad(date.getSeconds()) +
    diff +
    pad(tzOffset / 60) +
    ":" +
    pad(tzOffset % 60)
  );
};

toISOStringWithTimezone() 함수를 new Date() 객체를 인수로 사용하여 시간대 오프셋이 있는 ISO 형식으로 날짜를 얻습니다. 예를 들어:

toISOStringWithTimezone(new Date()); // '2020-10-06T20:43:33-04:00'

요약

축하합니다! 시간대를 포함한 날짜를 ISO 형식으로 변환하는 랩을 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.