답변1
date
GNU 날짜(또는 이를 이해하고 잘 작동하는 다른 프로그램 ) 가 있다고 가정하고 다음을 사용하십시오.-d
bash
이 -d
플래그를 사용하여 다양한 지점의 시간을 보고할 수 있습니다. 예를 들어
% date -d "00:00:00 tomorrow"
Sat Jul 16 00:00:00 EDT 2016
이를 사용하여 초를 보고할 수 있습니다.+%s
% date -d "00:00:00 tomorrow" +%s
1468641600
현재 시간을 초 단위로 알 수 있습니다.
% date +%s
1468633682
따라서 차이를 계산할 수 있습니다.
% secs_left=$(( $(date -d "00:00:00 tomorrow" +%s) - $(date +%s) ))
% echo $secs_left
7871
(이것은 대략 정확합니다. 7871초는 2시간 11분 11초이며 이는 명령을 실행했을 때 정확했습니다.)
csh
요청에 따라 편집:
csh
비슷한 명령 에서는 다음과 같습니다.
% @ secs_left = ( `date -d "00:00:00 tomorrow" +%s` - `date +%s` )
% echo $secs_left
7871
답변2
노력하다:
eval "`date +'@ s = (86400 - %S) - 60 * (%M + 60 * %H)'`"; echo $s
그러나 겨울 및 일광 절약 시간이 적용되는 시간대에서는 일광 절약 시간이 전환되는 날이 아니라 전환 전(보통 이른 아침에 발생)에 호출하면 올바른 결과가 제공되지 않습니다.
csh
참고 하세요오른쪽 노조*/
보다 우선합니다 +-
.
@ s = 1 - 2 + 3 - 4
예
@ s = 1 - (2 + (3 - 4))
아니다:
@ s = (((1 - 2) + 3) - 4)
다른 언어와 동일합니다. 이 문제는 (6.15.01)에서 수정되었으며 tcsh
실행하면 set compat_expr
이전 동작으로 되돌릴 수 있습니다.
따라서 주위에 괄호가 있으므로 및 86400 - %S
에서 작동합니다 .csh
tcsh
답변3
csh에서는 매우 간단합니다.
set start_time = `date +%s`
set end_time = `date +%s`
@ time_elapsed = $end_time - $start_time
echo "$time_elapsed time elapsed in seconds"
@ time_elapsed = `date -u -r $time_elapsed +%T`
echo = "$time_elapsed time elapsed in hh:mm:ss format"
답변4
이건 숙제 질문처럼 읽혀요.
시간, 분, 초만 얻을 수 있다는 점을 고려하면 해당 숫자를 가져와서 계산해야 합니다. 산수는 복잡하지 않습니다. 당신이 그것을 알아낼 수 있다고 확신합니다.
이렇게 하면 신뢰할 수 있는 결과가 제공되지 않습니다.하나 있으니까경쟁 조건이러한 세 가지 입력 값을 결정하는 동안 시간이 변경되면 이 오류를 감지하고 수정하기 위한 조치를 취해야 합니다.
@StevenHaris의 답변 결과를 사용하여 계산이 올바른지 확인하고,