如何用 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 求和日期的主要内容,如果未能解决你的问题,请参考以下文章

powerbi里如何用两列类别筛出后求和

VBA研究VBA中如何用求和函数SUM求和

如何用特定键对数组值求和[重复]

如何用java实现十道加法求和,算出答对几道,答错几道!

python的sum函数怎么用

excel怎样分类求和