输入文件包含
2012-12-23 23:59:59
我必须首先将时间转换为秒,然后与日期结合(将日期作为小数添加到时间)
time (sec) = 23*3600 + 59*60 + 59 = 86400
日期.23(仅限日期)
输出应为86400.23
朋友们请帮帮我。我无法让这个工作。提前谢谢。
答案 0 :(得分:1)
请参阅以下bash
代码:
d='2012-12-23 23:59:59'
IFS=: read h m s <<< "$d"
day=${d% *}; day=${day##*-}
echo $(( (${h#* } * 3600) + (m * 60) + s)).$day
或awk
:
d='2012-12-23 23:59:59'
read day hour min sec < <(awk -F'[ :-]' '{print $3, $4, $5, $6}' <<< "$d")
echo $(( (hour * 3600) + (min * 60) + sec)).$day
或者简单地说:
echo '2012-12-23 23:59:59' | awk -F'[ :-]' '{print ($4*3600)+($5*60)+$6"."$3}'
答案 1 :(得分:1)
您可以使用date
命令验证/格式化输入:
#!/bin/bash
read datetime
date=$(date --date="$datetime" +%d)
time=$(date --date="$datetime" +"1970-01-01 %H:%M:%S UTC")
echo $(date --date="$time" +%s).$date
# -> 86399.23