계산에 에포크 시간을 사용하기 위한 구문과 "date" 명령의 "--date=STRING" 사용법

계산에 에포크 시간을 사용하기 위한 구문과 "date" 명령의 "--date=STRING" 사용법

1970-01-01 00:00:00 UTC 이후 초 단위로 표현된 시간이 있습니다 1524884843. 예: .

위에서 지정한 시간으로부터 1개월 후의 시간을 얻고 싶습니다.

일반적으로 지금으로부터 1개월 후의 시간을 얻으려면 다음을 사용할 수 있습니다.

root@beaglebone:~/bbbrtc# date
Sat Apr 28 03:12:54 UTC 2018
root@beaglebone:~/bbbrtc# date -d "now+1 month"
Mon May 28 03:12:57 UTC 2018

-d매개변수 앞에 as....를 붙여 @에포크 초를 지정할 수도 있습니다.

root@beaglebone:~/bbbrtc# date -d "@1524884843"
Sat Apr 28 03:07:23 UTC 2018

@그러나 앞에 붙은 에포크 시간을 계산과 결합 하려고 하면 오류가 발생합니다...

root@beaglebone:~/bbbrtc# date -d "@1524884843+1 month"
date: invalid date `@1524884843+1 month'

신기원 시간과 상대 계산을 결합하는 올바른 구문은 무엇입니까?

답변1

계산 결과를 괄호 안에 넣을 수 있습니다.

root@beaglebone:~/bbbrtc# date -d "@1524884843+(1 month)"
Sat Apr 28 03:07:23 UTC 2018

답변2

ast-open 사용 date(빌드 방법과 환경에 따라 ksh93의 내장 날짜일 수 있음):

$ date -d '#1234567890'
Fri Feb 13 23:31:30 GMT 2009
$ date -d "#1234567890 30 days"
Sun Mar 15 23:31:30 GMT 2009

(ast는 date월 단위 오프셋을 지원하지 않습니다(월에는 고정 길이가 없음).)

GNU를 사용하면 에포크 시간을 1970-01-01 00:00:00 UTC를 기준으로 초 단위의 오프셋으로 표현하는 date이전 방법(지원이 추가되기 전)을 사용할 수 있습니다.@epoch

$ date -d '1970-01-01T00:00:00Z + 1234567890 seconds'
Fri 13 Feb 23:31:30 GMT 2009
$ date -d '1970-01-01T00:00:00Z + 1234567890 seconds + 1 month'
Mon 16 Mar 23:31:30 GMT 2009

하지만 여기서 주의할 점은,1 개월31일, 아마도 date고려하기 때문일 것입니다1 개월오프셋은 1970년 1월을 기준으로 합니다.

당신이 GNU이고 월을 기준으로 한 날짜에서와 같이 작동하기를 원하는 경우 date, 즉 한 달의 오프셋은 시작 날짜와 같은 달의 같은 날(다음 달에 그런 날이 있다고 가정)을 제공합니다( 시간 간격에 약간의 DST 변화가 있습니다. 반드시 같은 시간은 아닙니다.) 그러면 다음을 사용하는 것이 좋습니다.@isaac의 2단계 방법.

관련 정보