【发布时间】:2019-10-26 06:40:55
【问题描述】:
我想将日期转换为时间戳。
我的输入类似于:
Mon Sep 30 17:37:39 2019
我想获取那个时间戳并检查自今天以来已经过去了多少天。
我尝试了什么:
data = "$(date --date "$(echo "$info" | grep "Date added: *" | sed 's/Date added\:\s//i' | awk '{$1=$1};1')" '+%H')"
final = $(expr $(date '+%H') - $data)
但是,在某些情况下,这会打印出诸如 -9、-3、-12 等值,并且对于今天的日期,它当前会打印出“08”。任何想法如何解决这个问题?
值得一提的是,如果这会使事情复杂化,我并不真正关心确切的时间,我更感兴趣的是过去了多少天。
编辑
当前解决方案(不处理小时数,这很糟糕)。我提取日、月和年并将其组织成 YYYY-MM-DD,然后将其转换为时间戳。该解决方案最终无法处理我想要的时间。
$(( ($(expr $(date '+%s')) - $(date -d "$(printf '%s\n' "$date_added" | awk '{
printf "%04d-%02d-%02d\n", $5, \
(index("JanFebMarAprMayJunJulAugSepOctNovDec",$2)+2)/3,$3}')" +"%s")) / 3600 ))
【问题讨论】: