在bash中生成特定日期

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在bash中生成特定日期相关的知识,希望对你有一定的参考价值。

嗨我写下了一些bash来生成格式为YYYYMMDD的日期。

我知道这不完美,但最后的事情将是:

生成两个相隔31天的2个日期,从今天至少一天开始,而今年年底结束。格式为YYYYMMDD

month="$(awk -v min=1 -v max=12 'BEGIN{srand(); print int(min+rand()*(max-min+1))}')"
day="$(awk -v min=1 -v max=31 'BEGIN{srand(); print int(min+rand()*(max-min+1))}')"
year="$(date +%Y)"



if (( "${month}" < 10 )); then
    month_proper="$(echo 0"${month}")"
else
month_proper="$(echo "${month}")"
fi
if (( "${day}" < 10 )); then
    day_proper="$(echo 0"${day}")"

else
day_proper="$(echo "${day}")"
fi



echo month "${month}"
echo month with 0 if smaller than 10 : "${month_proper}"
echo day "${day}"
echo day with 0 smaller than 10 : "${day_proper}"

ok="$(date -d ""$year""${month_proper}""${day_proper}"" +"%Y%m%d")"
echo date with proper format "${ok}"
date -d "$year""${month_proper}""${day_proper}"

我必须在哪个方向扩展此脚本才能获得最终结果?我已经有了日期生成,但没有检查是否提前一天。

答案

要求几乎完全指定范围(明年12月31日至1月31日),所以你可以写

a_fmt=`date -d "tomorrow" +%Y1231`
a_num=`date -d "$a_fmt" +%s`

b_num=$(( a_num + 31 * 24 * 3600 ))
b_fmt=`date -d @$b_num +%Y%m%d`

echo "Range is '$a_fmt'..'$b_fmt'"

以上是关于在bash中生成特定日期的主要内容,如果未能解决你的问题,请参考以下文章

使用在另一个片段(NPE)中生成的值设置片段的 TextView [重复]

Android:将片段和弹出窗口的点击事件中生成的变量传递给活动的方法

如何在Oracle中生成一周的第一天,一周的最后一天和两个日期之间的周数

如何在 Bash 中生成随机数?

在python中生成给定范围内的所有日期

sh 在bash中生成UUID4的便携方法