두 개의 (비표준) 날짜 형식 사이에서 초를 찾는 쉬운 방법은 무엇입니까?

두 개의 (비표준) 날짜 형식 사이에서 초를 찾는 쉬운 방법은 무엇입니까?

다음 형식으로 날짜를 출력하는 프로그램이 있습니다.

Thu Mar 5 09:15:27 2015

이는 Linux의 출력과 매우 유사 date하지만 이 형식에는 시간대가 포함되지 않습니다. string Thu Mar 5 09:15:27 2015as date1및 string Thu Mar 5 09:30:58 2015as date2in 을 캡처할 수 있다고 가정하면 bash, 계산을 수행하기 위해 자체 bash/python/etc. 스크립트를 작성하지 않고 이 두 날짜 사이의 초 수를 어떻게 얻을 수 있습니까?

답변1

"계산 없음"이 무슨 뜻인지 잘 모르겠습니다. 아래에서 계산해 보세요...

date1="Thu Mar 5 09:15:27 2015"
date2="Thu Mar 5 09:30:58 2015"

printf "%s\n" $(( $(date -d "$date2" "+%s") - $(date -d "$date1" "+%s") ))

답변2

시간대 정보가 없으면 항상 정확한 답변을 드릴 수 없습니다.

#!/bin/bash
export TZ
for TZ in America/New_York Europe/Prague ; do
    d1=$(date -d 'Mar 8 01:59:59 2015' +%s)
    d2=$(date -d 'Mar 8 03:00:01 2015' +%s)
    echo "$TZ: $((d2-d1))"
done

답변3

일부 다른 셸에는 내장 기능이 있습니다.

다루기 힘든

zmodload zsh/datetime
date1='Thu Mar 5 09:15:27 2015'
date2='Thu Mar 5 09:30:58 2015'
for v (date{1,2}) strftime -rs $v '%a %b %d %T %Y' ${(P)v}
echo $((date2 - date1))

바라보다info zsh strftime그리고info zsh flags자세한 내용은 P매개변수 확장 플래그를 참조하세요.

크쉬 93

date1='Thu Mar 5 09:15:27 2015'
date2='Thu Mar 5 09:30:58 2015'
echo "$(($(printf '%(%s)T - %(%s)T' "$date2" "$date1")))"

자세한 내용은 man <(printf --nroff 2>&1)ksh 내에서 참조하세요.

(두 경우 모두 날짜는 현지 시간대로 간주됩니다.)

관련 정보