shell - 当日期是变量时如何在linux shell中增加日期
问题描述
我需要将日期变量增加 15 分钟。此脚本递增当前日期
#!/bin/bash
for i in {0,15,30,45}
do
date --date='+'$i' minutes' +"%Y%m%d%H%M%S"
echo "$date"
done
但我需要将初始日期设置为一年前,并在一年内不断增加。是否可以创建一个日期时间变量并在循环中不断添加分钟?
我需要这个来下载名为 20190101231500.csv 的文件,并且每个下一个文件名都有 15 分钟后的时间戳。
谢谢!
解决方案
用于date --date
计算大量日期会变得非常慢。
# With date calculations (too) slow, only done for 10 days
d="2015-01-01"
((maxminutes=24*60))
while [ "$d" != "2015-01-10" ]; do
d=$(date -I -d "$d + 1 day")
for ((m=0; m<${maxminutes};m+=15)); do
date -d "${d} + ${m} minutes" +"%Y%m%d%H%M"
done
done
另一种方法是使用 awk,以防止经常调用另一个程序
awk -v startdate="2015-01-01" -v enddate="2015-01-10" 'BEGIN {
printf("%s %s\n", startdate, enddate);
split(startdate,A,"[-]");
T1=mktime(A[1] " " A[2] " " A[3] " 0 0 0");
split(enddate,B,"[-]");
T2=mktime(B[1] " " B[2] " " B[3] " 23 59 59");
while (T1 < T2) {
printf("%s\n", strftime("%Y-%m-%d %H:%M",T1));
T1+=60*15;
}
}'
推荐阅读
- c# - 使用 WebClient 下载照片并提高下载速度
- javascript - 我们如何将所选产品的 id 传递给反应中的其他组件
- c - 带有struct关键字的c中模块c0.ASM中的未定义符号_main
- database - 猫鼬只更新不为空的字段?
- python - Pyinstallere EXE、PyQt WebEngineView \ WebEnginePage 从 GUI 中消失
- wpf - WPF - ItemsControl 的自定义样式
- javascript - 我可以使用 d3.js 从流程图创建 json 文件吗?
- c# - 当从文件夹运行进程时重命名/移动文件夹
- react-native - react-native-maps:animateToRegion 不适用于区域或初始区域?
- flutter - 为什么颤振本地通知会出现异常