미분류/Tip

ISO Date를 가공하기

DarrenKwonDev 2020. 7. 26. 16:11

일반적으로 게시판 형태에서 게시물이 작성된 시간은 하루 이상 차이가 나면 YYYY.MM.DD 2020.03.05, 하루 이하로 차이가 나면 HH.MM.SS 05:28:22 로 표기가 됩니다. ISO를 이런 방식으로 바꿔봅시다.

 

 

ISO

 

그런데 현재 받아오는 날짜의 시간 형태는 ISO 형식이군요.

https://ko.wikipedia.org/wiki/ISO_8601

2020-07-25T16:12:08.454Z

 

여기서 T는 시간 표현의 시작을 알리는 시간(time) 지정자입니다. (T 이후로는 날짜가 아닌 시간!)

Z는 시간이 UTC인 경우, 시간 뒤에 빈칸없이 Z를 직접 추가해야 합니다. 

이 형식의 의미는 2020년 7월 25일 16시 12분 08.454초 UTC 라는 의미군요

 

 

한국 시간으로 변경 + 날짜 데이터 가공하기

toISOString을 이용해서 시간을 더하는 방식에서 toLocaleString을 이용해 한국 시간으로 변환한 후 가공하는 방식으로 변경했습니다.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString

 

 

export function ISORefining(data) {
  let getPostTime = new Date(data);
  let current = new Date(Date.now());

  const dateOptions = {
    year: "numeric",
    month: "numeric",
    day: "numeric",
    hour12: false,
    hour: "2-digit",
    minute: "2-digit",
    second: "2-digit",
  };

  const postTimeinLocal = getPostTime.toLocaleString("ko-KR", dateOptions);
  const postTimeinLocalSplit = postTimeinLocal.split(".");

  const postYear = postTimeinLocalSplit[0];
  const postMonth = postTimeinLocalSplit[1];
  const postDay = postTimeinLocalSplit[2];

  const postYMD = `${postYear.trim()}-${postMonth.trim()}-${postDay.trim()}`;
  const postTime = postTimeinLocalSplit[3];

  const currentTimeinLocal = current.toLocaleString("ko-KR", dateOptions);
  const currentTimeinLocalSplit = currentTimeinLocal.split(".");

  const curYear = currentTimeinLocalSplit[0];
  const curMoth = currentTimeinLocalSplit[1];
  const curDay = currentTimeinLocalSplit[2];

  if (postYear > curYear) {
    return postTime;
  } else if (postMonth > curMoth) {
    return postTime;
  } else if (postDay + 1 > curDay) {
    return postTime;
  } else {
    return postYMD;
  }
}