在处理数据时,经常需要根据时间段批量回溯数据。在 Shell 脚本中,熟练运用 date 命令及其格式转化至关重要,特别是面对 20181010 和 2018-10-10 这两种常见格式,掌握几个核心技巧能极大提升效率。
基础日期格式转换
获取当前日期的两种标准格式是最常用的需求。这里要注意不同系统对 -d 参数的支持差异,GNU coreutils 通常支持较好。
date -d today +"%Y%m%d"
date +"%Y%m%d"
如果需要带横杠的格式:
date -d today +"%Y-%m-%d"
date +"%Y-%m-%d"
日期互转与相对时间计算
格式之间的转换非常直接,利用 -d 指定输入字符串,+"%..." 指定输出格式即可。
# 2018-11-01 转 20181101
date -d "2018-11-01" +"%Y%m%d"
# 20181101 转 2018-11-01
date -d "20181101" +"%Y-%m-%d"
处理相对时间也很方便,比如生成今天的前一天和后一天:
date -d "today 1 day ago" +"%Y%m%d"
date -d "today 1 day" +"%Y%m%d"
date -d "today 1 day ago" +"%Y-%m-%d"
date -d "today 1 day" +"%Y-%m-%d"
如果基于变量 ${dt} 计算前一天或后一天:
date -d "${dt} 1 day ago" +"%Y%m%d"
date -d "${dt} 1 day" +

