Encontrando diferença nas datas que está no formato “% Y% m% d% A% M% S”

1

Eu tenho duas datas na data + formato "% Y% m% d% A% M% S". Como encontrar a diferença e como verificar se a diferença é superior a 4 horas?

É assim que tentei

echo $(( ( $(date +"%Y%m%d%H%M%S") - $(date +"%Y%m%d%H%M%S" -d "1970-01-01 + $(stat -c '%Z' filename ) secs"))))
O comando

date retorna este

Sun Sep  6 10:35:19 CDT 2015
    
por VRVigneshwara 06.09.2015 / 17:05

2 respostas

4

Tendo, por exemplo:

date1=20150906171119
date2=20150906172244

uma amostra / início pode ser:

#!/bin/bash

date1=20150906171119
date2=20150906172244

# Convert date to YYYYMMDD HH:MM:SS and get time in seconds.
d1=$(date -d"${date1:0:8} ${date1:8:2}:${date1:10:2}:${date1:12:2}" +%s)
d2=$(date -d"${date2:0:8} ${date2:8:2}:${date2:10:2}:${date2:12:2}" +%s)

# Limit in seconds
# 60    = 1 min
# 3600  = 1 hour
# 14400 = 4 hours
lim=14400

# arg1=time1 (seconds)
# arg2=time2 (seconds)
# arg3=difference limit
ddiff()
{
    if (($1 > $2)); then
        ddiff $2 $1 $3
    else
        return $(($2 - $1 < $3))
    fi
}

if ddiff $d1 $d2 $lim; then
    echo more then $lim seconds
else
    echo less then $lim seconds
fi

Você poderia lançar uma verificação de igualdade, date1 = date2 , se isso for importante.

    
por 06.09.2015 / 17:43
3

Você não pode fazer isso porque não há fuso horário nesse formato.

"%Y-%m-%d %H:%M:%S %z"

é o formato que é padronizado para, e. diff -u e esse formato inclui o fuso horário.

    
por 06.09.2015 / 17:16