처리 일을 기준으로 전월 종료일을 어떻게 알 수 있습니까?
예 :
- 처리 일 = 15jan2015
- 예상 날짜 = 31dec2014,
- 처리 일 = 10feb2015
- 예상 날짜 = 31jan2015
처리 일을 기준으로 전월 종료일을 어떻게 알 수 있습니까?
예 :
답변:
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
있습니다 많은 방법 이 작업을 수행하려면; 여기 내가 찾은 가장 간단한 것이 있습니다 (여기서는 GNU라고 가정 date
).
$ date -d "-$(date +%d) days"
Fri Jul 31 16:07:23 EDT 2015
TZ=Pacific/Apia faketime '2011-12-31 12:00' date -d '1 day ago'
. 2011-12-30이 없기 때문에 오류가 발생합니다. 즉, 날짜 오프셋 은 달력 시간에 수행되었습니다. 2011-12-31에서 31 일을 뺀 31 일은 31 분의 31이 걸리기 때문에 2011-11-30을 제공합니다. 현재 시간에서 31 * 24 * 60 * 60 * 60 초가 걸리지 않습니다. TZ=Pacific/Apia faketime '2011-12-31 12:00' date -d '24 hour ago'
29 일, 즉 이번에는 24 * 60 * 60 * 60 초 전인 날짜 와 비교하십시오 .
BSD date
유틸리티 를 사용하는 Mac OS에서 작동하는 버전은 다음과 같습니다 .
date -v1d -v-1d +%d%b%Y
인수는 순서대로 적용됩니다. 날짜가 한 인수에서 다음 인수로 파이프된다고 상상할 수 있습니다. 예를 들면 다음과 같습니다.
date
)-> 2017-03-06-v1d
)-> 2017-03-01로 설정하십시오.-v-1d)
-> 2017-02-28+%d%b%Y
)-> 28Feb2017당신은 사용 개월 앞으로 또는 뒤로의 수를 도달 할 수있는 date -v-1m -v1d -v-1d
대체 -1m
전달 개월 뒤로 또는 수 (로 +1m
당신이 원하는).
이것이 일반적인 대답입니다. 이 질문은 구체적으로 시작 날짜와 관련된 날짜를 묻습니다. Mac OS / BSD 날짜 유틸리티를 사용하면 시작 날짜 스탬프를 제공 할 수 없지만 각 날짜 요소를 개별적으로 설정할 수 있습니다.
date -v2015y -v1m -v15d -v1d -v-1d +%d%b%Y
-> 31Dec2014