将给定日期范围内的所有日期存储到变量中

弗雷德·奥斯卡托(FredOscatore)

我想存储两个用户输入日期之间的所有可能的日期。输入将类似于2014060520140830

我想使用循环将给定日期之间的每个日期存储到一个变量中,以便可以使用它。

生成或计算的日期必须与输入的格式相同。

startdate=20141030
starttime=165800

enddate=20141120
endtime=175050

day=`expr $startdate % 100`
month=`expr $startdate % 10000`
year=`expr $startdate % 100000000`
month=`expr $month / 100`
year=`expr $year / 10000`
echo "$year  $month  $day"

while [ $enddate -ge $cdate ]
do
var=$cdate

#using variable var

if  [ $day -eq 31 ]; then
cdate=`expr $cdate - $day`
day=1
((month++))
cdate=`expr $cdate + 100 + $day`
#cdate=`expr $cdate + $day`
    if  [ $month -eq 13 ]; then
        #tmp=`expr $month \* 100`
        cdate=`expr $cdate - $month \* 100`
        month=1
        ((year++))
        cdate=`expr $cdate + 10100`
        if [ $year -eq 2999 ]; then
            ((year++))
            echo $cdate
            cdate=30010100
        fi
    fi
else
    ((day++))
    ((cdate++)) 
fi

if [ $enddate == $cdate ]; then
check=1
fi
done

我试图以此方式实现我的要求。但是在编译时它说:

一元运算符预期

导致此错误的原因是什么,如何使用Shell脚本以更好的方式执行此操作?

震荡器

我将采取完全不同的方法。手动进行所有日期计算很容易出错(一个月中不一定总是有31天,您会有leap年,等等)。再看一下代码,很难说出自己在做什么(这是一件很糟糕的事情)。

#!/bin/bash
startdate=20141030
enddate=20141120

dates=()
for (( date="$startdate"; date != enddate; )); do
    dates+=( "$date" )
    date="$(date --date="$date + 1 days" +'%Y%m%d')"
done
echo "${dates[@]}"

这使用date命令来处理所有计算,并将每个日期存储在$dates数组中。

结果看起来像这样:

20141030 20141031 20141101 20141102 20141103 20141104 20141105 20141106 20141107 20141108 20141109 20141110 20141111 20141112 20141113 20141114 20141115 20141116 20141117 20141118 20141119

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在JavaScript中获取给定日期范围内的所有日期的列表

来自分类Dev

如何获得给定日期范围内的天数

来自分类Dev

给定日期范围内当前周的天数

来自分类Dev

SQL:查找具有给定日期范围内每月数据的记录

来自分类Dev

SQL:查找具有给定日期范围内每个月的数据的记录

来自分类Dev

获取给定日期范围内的月份的开始日期和结束日期

来自分类Dev

给定日期时间范围内的随机日期时间

来自分类Dev

给定日期时间范围内的随机日期时间

来自分类Dev

给定日期范围,查找在该范围内重叠的事件

来自分类Dev

从数据库中检索给定日期范围内的可用房间及其床

来自分类Dev

如何使用cpp中的地图显示给定日期范围内的汇率(在下面的问题中)?

来自分类Dev

给定日期范围内的第一个非空值

来自分类Dev

在给定日期范围内查询BigQuery表

来自分类Dev

MySQL-获取给定日期范围内的并发事件总数

来自分类Dev

给定日期范围内活动用户的每日计数

来自分类Dev

给定日期数组,将结果显示在“周”范围内

来自分类Dev

熊猫-比较给定日期范围内小时平均值的平均值

来自分类Dev

SQL:在给定日期范围内重复模式

来自分类Dev

在给定日期范围内每天计数设备

来自分类Dev

在给定日期范围内选择可用的客房

来自分类Dev

PL / SQL函数可计算给定日期范围内的平均每月

来自分类Dev

如何查找在给定日期范围内创建的对象?

来自分类Dev

Couchbase在给定日期范围内获取文档

来自分类Dev

SQL Server-查找给定日期范围内的活跃客户

来自分类Dev

在php文件中显示两个给定日期之间的所有日期

来自分类Dev

返回给定日期内的所有记录

来自分类Dev

如何确定给定日期范围内一个月中的天数?

来自分类Dev

Oracle Hourly Report按小时减去给定日期范围内的两个字段

来自分类Dev

如果类别在给定日期范围内发生过多次,则列出事件

Related 相关文章

  1. 1

    在JavaScript中获取给定日期范围内的所有日期的列表

  2. 2

    如何获得给定日期范围内的天数

  3. 3

    给定日期范围内当前周的天数

  4. 4

    SQL:查找具有给定日期范围内每月数据的记录

  5. 5

    SQL:查找具有给定日期范围内每个月的数据的记录

  6. 6

    获取给定日期范围内的月份的开始日期和结束日期

  7. 7

    给定日期时间范围内的随机日期时间

  8. 8

    给定日期时间范围内的随机日期时间

  9. 9

    给定日期范围,查找在该范围内重叠的事件

  10. 10

    从数据库中检索给定日期范围内的可用房间及其床

  11. 11

    如何使用cpp中的地图显示给定日期范围内的汇率(在下面的问题中)?

  12. 12

    给定日期范围内的第一个非空值

  13. 13

    在给定日期范围内查询BigQuery表

  14. 14

    MySQL-获取给定日期范围内的并发事件总数

  15. 15

    给定日期范围内活动用户的每日计数

  16. 16

    给定日期数组,将结果显示在“周”范围内

  17. 17

    熊猫-比较给定日期范围内小时平均值的平均值

  18. 18

    SQL:在给定日期范围内重复模式

  19. 19

    在给定日期范围内每天计数设备

  20. 20

    在给定日期范围内选择可用的客房

  21. 21

    PL / SQL函数可计算给定日期范围内的平均每月

  22. 22

    如何查找在给定日期范围内创建的对象?

  23. 23

    Couchbase在给定日期范围内获取文档

  24. 24

    SQL Server-查找给定日期范围内的活跃客户

  25. 25

    在php文件中显示两个给定日期之间的所有日期

  26. 26

    返回给定日期内的所有记录

  27. 27

    如何确定给定日期范围内一个月中的天数?

  28. 28

    Oracle Hourly Report按小时减去给定日期范围内的两个字段

  29. 29

    如果类别在给定日期范围内发生过多次,则列出事件

热门标签

归档