현재 시간을 확인하고 이를 하루의 경과 시간(초)으로 변환하려면 어떻게 해야 합니까?

현재 시간을 확인하고 이를 하루의 경과 시간(초)으로 변환하려면 어떻게 해야 합니까?

현재 시간을 확인하고 하루의 경과된 초로 변환하는 방법을 묻고 싶습니다.

사실 지금부터 자정까지의 시간을 초 단위로 표시하고 싶습니다. 하루의 총 초 수가 86400이므로 86400에서 현재 시간(그 날 이후 경과된 초 단위)을 뺍니다.

편집하다:

이것은 실용적인 문제입니다. 그게 안 되면 date -d어떻게 우리 코치들이 그런 질문을 할 수 있겠어요. 어쩌면 방법이 있을 수도 있습니다. 모두가 이 문제를 이해합니다. 초를 빼는 방법이 다릅니다.

여기에 이미지 설명을 입력하세요.

답변1

dateGNU 날짜(또는 이를 이해하고 잘 작동하는 다른 프로그램 ) 가 있다고 가정하고 다음을 사용하십시오.-dbash

-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에서 작동합니다 .cshtcsh

답변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의 답변 결과를 사용하여 계산이 올바른지 확인하고,

관련 정보