처리일을 기준으로 지난달 종료일을 구하는 방법은 무엇입니까?
예:
- 처리 날짜 = 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