쉘 스크립트에서 지난 달 날짜를 가져옵니다.

쉘 스크립트에서 지난 달 날짜를 가져옵니다.

처리일을 기준으로 지난달 종료일을 구하는 방법은 무엇입니까?

예:

  • 처리 날짜 = 2015년 1월 15일
  • 추정일 = 2014년 12월 31일

  • 처리일 = 2015년 2월 10일
  • 예상일 = 2015년 1월 31일

답변1

GNU 사용 date:

$ date +%d%b%Y
16Aug2015
$ date -d "$(date +%Y-%m-01) -1 day" +%d%b%Y
31Jul2015

일부 셸에는 날짜 작업에 대한 지원이 내장되어 있습니다.

그리고 ksh93:

$ printf "%(%d%b%Y)T\n" "1st day, yesterday"
31Jul2015

그리고 zsh:

$ zmodload zsh/datetime
$ strftime -s d %Y-%m-01-12 $EPOCHSECONDS
$ strftime -rs d %Y-%m-%d-%H $d
$ strftime %d%b%Y $((d-86400))
31Jul2015

답변2

BSD 유틸리티를 사용하는 Mac OS 버전은 다음과 같습니다 date.

date -v1d -v-1d +%d%b%Y

매개변수는 순차적으로 적용됩니다. 한 매개변수에서 다음 매개변수로 날짜가 전달되는 것을 상상할 수 있습니다. 예를 들어:

  • 현재 날짜( date)부터 시작 -> 2017-03-06
  • 날짜를 매월 1일로 설정 ( -v1d) -> 2017-03-01
  • 여기서 하루를 빼세요 ( -v-1d)-> 2017-02-28
  • 날짜 형식 설정 ( +%d%b%Y) -> 2017년 2월 28일

원하는 개월 수만큼 앞으로 또는 뒤로 이동을 사용할 수 date -v-1m -v1d -v-1d있으며 이를 -1m앞으로 또는 뒤로 이동하려는 개월 수( +1m)로 바꿀 수 있습니다.

이것이 일반적인 대답입니다. 질문은 특히 시작 날짜와 관련된 날짜에 대해 묻습니다. Mac OS/BSD 날짜 유틸리티에서는 시작 날짜 스탬프 제공을 허용하지 않지만 각 날짜 요소를 개별적으로 설정할 수 있습니다.

date -v2015y -v1m -v15d -v1d -v-1d +%d%b%Y-> 2014년 12월 31일

답변3

가지다방법은 여러 가지야이 작업을 수행;이것이 가장 간단한 것입니다내가 찾은 것(여기서 GNU를 가정 date):

$ date -d "-$(date +%d) days"
Fri Jul 31 16:07:23 EDT 2015

답변4

이 코드를 사용해 보세요

date -d "-$(date +%d) days  month" +%Y-%m-%d

관련 정보