如何用 Bash 求和日期
Posted
技术标签:
【中文标题】如何用 Bash 求和日期【英文标题】:How to Sum Date with Bash 【发布时间】:2013-09-08 11:18:06 【问题描述】:我需要以 15 分钟为间隔获取 Epoch 编号,然后是日期和时间。结果应该是这样的:
1376708400|2013-08-17 00:00:00
1376709300|2013-08-17 00:15:00
1376710200|2013-08-17 00:30:00
1376711100|2013-08-17 00:45:00
1376712000|2013-08-17 01:00:00
1376712900|2013-08-17 01:15:00
1376713800|2013-08-17 01:30:00
1376714700|2013-08-17 01:45:00
1376715600|2013-08-17 02:00:00
1376716500|2013-08-17 02:15:00
1376717400|2013-08-17 02:30:00
...等等...总共我应该有 96 行。
我现在最大的疑问是如何将分钟数增加(或求和)15 分钟,我已经尝试过了(原谅我的烂摊子,我还在学习):
i=96
_incrementatime='+15 minutos'
count=1
_Date=$(`date "2013-08-29 00:00:00"`)
_dataEmSeg = `date -d "2013-08-29 00:00:00" +%s`
while test $i -ne 0
do
_VarData=$(`date --date="$_incrementatime*count"`)
_exprt=$(expr `$_Date+$_VarData`)
echo "$_dataEmSeg e $_exprt "
i=$((i-1))
count=$((count+1))
done
如果有人能给我一些解决这个问题的方法,我将不胜感激。
【问题讨论】:
Shell 不会对_dataEmSeg = ...
中 =
周围的空格感到满意
【参考方案1】:
你可以以此为基础:
#!/bin/bash
DATE='2013-08-29 00:00:00'
TIMESTAMP=$(date -d "$DATE" '+%s')
INCREMENT=$(( 60 * 15 ))
STEPS=5
echo "$TIMESTAMP|$DATE"
for (( I = 1; I <= STEPS; ++I )); do
(( TIMESTAMP += INCREMENT ))
DATE=$(date -d "@$TIMESTAMP" '+%F %T')
echo "$TIMESTAMP|$DATE"
done
输出:
1377705600|2013-08-29 00:00:00
1377706500|2013-08-29 00:15:00
1377707400|2013-08-29 00:30:00
1377708300|2013-08-29 00:45:00
1377709200|2013-08-29 01:00:00
1377710100|2013-08-29 01:15:00
【讨论】:
【参考方案2】:你的增量线:
VarData=$(`date --date="$_incrementatime*count"`)
应该是:
VarData=$(`date --date="$_incrementatime*$count"`)
如果您想显示count
变量。
【讨论】:
以上是关于如何用 Bash 求和日期的主要内容,如果未能解决你的问题,请参考以下文章