달나라 노트

Google Apps Script : String을 Date로 변경, convert string to date type 본문

Google Apps Script

Google Apps Script : String을 Date로 변경, convert string to date type

CosmosProject 2022. 11. 21. 22:30
728x90
반응형

 

 

 

Google Apps Script에서 string을 date type으로 변경하는 방법은 여러 가지가 있습니다.

오늘은 그 중 대표적인 몇가지만 알아봅시다.

 

 

 

1. Date 객체 사용 1

 

function myFunction() {
  var date_string = '2022-12-25';

  var date = new Date(date_string);

  Logger.log(date);
}


-- Result
Sun Dec 25 09:00:00 GMT+09:00 2022

 

첫 번째는 Date 객체를 사용하는 것입니다.

 

- var date_string = '2022-12-25';

위 예시를 보면 먼저 위처럼 2022-12-25라는 날짜 형태로 적힌 텍스트가 있습니다.

이건 YYYY-MM-DD라는 날짜 형태로만 적혀있을 뿐 텍스트입니다. Date type이 아니예요.

 

- var date = new Date(date_string);

그리고 이렇게 Date 객체 생성 시 date_string을 parameter로 주면 Date 객체는 이를 자동으로 인식해서 2022년 12월 25일의 날짜로 변경해줍니다.

 

그래서 결과를 보면 2022-12-25 9시로 나온 것을 볼 수 있죠.

9시는 기준시이기 때문입니다.

 

Date 객체는 주어진 string을 자동으로 인식하기 때문에 시간까지 기준시로 인식해서 나타내줍니다.

 

Date 객체가 인식할 수 있는 날짜 형태의 string format은 아래 2개가 유일합니다.

YYYY-MM-DD

YYYY-MM-DD HH:mm:ss.sss

 

이 외의 format은 인식할 수 없습니다.

 

 

 

 

 

2. Date 객체 사용 2

 

이번에도 Date 객체를 사용해보겠지만 좀 다른 방식으로 사용해봅시다.

 

new Date(year, month, date, hours, minutes, seconds, ms)

 

Date 객체는 위처럼 총 7개의 인자를 받을 수 있습니다.

각각의 parameter는 적혀진대로 다음을 의미합니다.

year = 년도

month = 월

date = 일

hours = 시

minutes = 분

seconds = 초

ms = 밀리초

 

 

function myFunction() {
  var new_date = new Date(2022, 11, 25, 19, 15, 38, 634);
  Logger.log(new_date);
}


-- Result
Sun Dec 25 19:15:38 GMT+09:00 2022

 

예를들어 위처럼 적으면 아래와 같은 시간을 만들어줍니다.

year = 2022 (= 2022년)

month = 11 (= 12월) -> javascript에서 1월이 0부터 대응되기에 12월은 11과 대응됩니다.

date = 25 (= 25일)

hours = 19 (= 19시)

minutes = 38 (= 38분)

ms = 634 (= 634밀리초)

 

결과를 보면 알 수 있죠.

 

 

 

 

이를 이용해서 2022-12-25라는 string을 date type으로 만들어 보겠습니다.

 

function myFunction() {
  var date_string = '2022-12-25';

  var list_date_string = date_string.split('-');
  Logger.log(list_date_string);

  var date = new Date(list_date_string[0], list_date_string[1]-1, list_date_string[2]);

  Logger.log(date);
}


-- Result
[2022, 12, 25]
Wed Jan 25 00:00:00 GMT+09:00 2023

 

- var list_date_string = date_string.split('-');

위 예시를 보면 split() method를 이용해 2022-12-25라는 string을 기호 - 기준으로 나눠 array로 만듭니다.

따라서 [2022, 12, 25] 이렇게 array가 생성된 것을 볼 수 있습니다.

 

이렇게 되면 각각은 년, 월, 일을 의미하므로 이걸 Date() 객체에 넣어주기만 하면 됩니다.

 

 

- var date = new Date(list_date_string[0], list_date_string[1]-1, list_date_string[2]);

여기서 한 가지 주의할 점은

javascript에서는 1월이 0과 대응됩니다 따라서 12월은 11과 대응되겠죠.

Javascript를 기반으로 한 Google Apps Script도 동일합니다.

 

따라서 12월을 나타내려면 12가 아니라 11을 전달해주어야하기 때문에 list_date_string[1] - 1을 하는 것에 주의합시다.

 

 

Sun Dec 25 00:00:00 GMT+09:00 2022

결과를 보면 날짜가 잘 생성된 것을 알 수 있죠.

여기서는 년, 월, 일을 주어주고 나머지 시, 분 초 정보는 주지 않았기 때문에 자동으로 모두 0으로 입력됩니다.

따라서 2022-12-25 00:00:00 이라는 아주 정확한 시점이 생성된 것을 볼 수 있습니다.

 

 

여기서는 날짜를 나눌 때 split을 사용했지만 뭐 사실 상관없습니다.

어떤 방식으로건 날짜 형태의 string을 나누고 년, 월, 일, 시, 분, 초, 밀리초 정보를 Date() 객체의 parameter로 순서에 맞게 넣어주면 됩니다.

 

 

 

 

 

function myFunction() {
  var date_string = '2022-12-25 19:15:33.992';

  var list_date_string = date_string.split(/[-:. ]/);
  Logger.log(list_date_string);

  var date = new Date(list_date_string[0], list_date_string[1]-1, list_date_string[2], list_date_string[3], list_date_string[4], list_date_string[5], list_date_string[6]);

  Logger.log(date);
}



-- Result
[2022, 12, 25, 19, 15, 33, 992]
Sun Dec 25 19:15:33 GMT+09:00 2022

 

위 예시도 이전과 비슷합니다.

다만 split() method를 사용해서 split을 할 때 separator를 대쉬(-), 콜론(:), 점(.), 공백( ) 4개의 separator를 주어준겁니다.

4개 중 하나라도 발견되면 그것을 separator로 인식해 나누라는 뜻이죠.

 

그래서 [2022, 12, 25, 19, 15, 33, 992] 이렇게 단위별로 다 나뉜 것을 알 수 있습니다.

 

그리고 생성된 날짜도

2022년 12월 25일 19시 15분 33초인 것을 알 수 있습니다.

 

 

 

 

 

 

728x90
반응형
Comments