>

bash에서 시간과 분으로 어떻게 계산할 수 있습니까? 예를 들어 두 개의 타임 스탬프를 사용하고 그 사이에 몇 시간이 있는지 알려주는 스크립트를 작성하려고한다면 어떻게해야합니까?

$ timediff 23:43 02:10
Time difference is: xxx hours.

예와 같이 두 번째 타임 스탬프가 하루 후인 경우 어떻게 처리합니까?


  • 답변 # 1

    $ t1="23:42"
    $ t2="02:10"
    $ e1=$( date -d "$t1" +%s )
    $ e2=$( date -d "$t2" +%s )
    $ if (( e1 > e2 )); then e2=$( date -d "$t2 tomorrow" +%s ); fi
    $ date -d@$e1
    Tue Oct  6 23:42:00 EDT 2015
    $ date -d@$e2
    Wed Oct  7 02:10:00 EDT 2015
    
    

    차를 찾으려면 분수 시간이 필요하지 않은 경우 쉘 산술을 사용하고, 그렇지 않으면 파이프를 bc 에 사용하십시오.

    $ diff=$(( (e2 - e1)/3600 ))
    $ echo $diff
    2
    $ diff=$( echo "scale=2; ($e2-$e1)/3600" | bc)
    $ echo $diff
    2.46
    
    

관련 자료

  • 이전 directory - rename 명령을 사용하여 파일의 첫 부분 이름 바꾸기
  • 다음 shell script - 두 이벤트를 기다리는 중