Linux의 date 명령어

UNIX 또는 LINUX 에서 다음과 같은 명령어를 입력하면

$ date

아래처럼 지금의 날짜와 시간이 표시됩니다.

2009. 04. 17. (금) 18:52:15 KST

어제의 날짜를 알고 싶으면, 다음과 같은 옵션들을 주어서 입력하면 됩니다.

$ date -d yesterday
$ data --date="yesterday"

이 방식이 괜히 직접 작성한다고, 날짜를 빼고, carry되는 거 계산해서 월에서 하나 빼고 하는 방식보다 훨씬 간편하고 정확합니다. 즉, 오늘이 4월 1일이면, 어제는 4월  0일이 아니라, 3월 31이 됩니다. 이 기능은 직접 작성해 본 사람만이 그 노가다의 압박을 이해합니다. 어제가 아닌 며칠 전의 날짜를 알고 싶으면, 예를 들어 100일 전의 날짜를 알고 싶으면 다음과 같은 옵션을 주면 됩니다.

$ date -d "-100 days"
$ date -d "100 days ago"
$ date --date="-100 days"
$ date --date="100 days ago"

100일 후의 날짜를 알고 싶으면,

$ date -d "+100 days"
$ date --date="+100 days"

하지만 다음의 옵션 조합은 에러가 납니다.

$ date --date="100 days after"

왜 after를 처리하지 않았을까요? 아마도 자동으로 뒤에 ago가 없으면 뒤(after)의 날짜가 되게끔 되어 있는 스펙이라고 생각됩니다. 장난삼아 다음처럼 옵션을 줍니다.

$ date -d "-100 days ago"

이 경우에는 ago는 100일 전을 의미하는데, - (음수) 기호가 붙었으니까, 100일 후가 되어야겠지요. 역시 기대한 결과를 얻습니다. 일(day)이 아니라 월(month)도 옵션으로 가능합니다. 2개월 3일 후의 날짜를 알고 싶으면 다음처럼 옵션을 부여합니다.

$ date -d "2 months 3 days"

내일은 다음과 같이 입력하면 됩니다.

$ date -d tomorrow

아래의 옵션들도 잘 동작합니다.

$ data -d "this monday"
$ data -d "last monday"
$ data -d "next monday"
$ data -d "this month"
$ data -d "last month"
$ data -d "next month"

ps 1.
역시, 내게 필요한 것은 아마 다른 누구에게도 필요한 것인가 봅니다. 이게 필요한 상황은 일단위로 데이터를 처리하고 있습니다. 그런데 어제 날짜의 데이터를 처리해야 합니다. 즉 프로그램은 오늘 실행하면서 어제의 날짜가 필요합니다. 그래서, 간편하게 shell에서 처리하는 방법을 찾다 보니 알게 됐습니다.
즉, $ date -d "yesterday" 가 필요했습니다.

ps 2.
왜, 이 방식이 내가 손수 만든 프로그램보다 간편하고 정확할까요? 간편하다는 것은 내가 개발할 시간을 줄여주니까 간편하겠지요. 정확하다는 것은, 다시 말하면 버그없이 잘 동작한다는 것은, 많은 사람들이 사용하고 테스트를 했기 때문에 그럴 것입니다.

댓글

이 블로그의 인기 게시물

Java의 String 객체의 메모리 사용량

리틀의 법칙 – Little’s law

true, false, positive, negative – TP/TN/FN/FP