我需要为格式为YYYYMM
的值分配一个变量,例如今天运行上个月的值应该生成为
Var1 = 201607
是否有可用的构建方法?你能分享一下生成这个的步骤吗?
答案 0 :(得分:1)
这些情况下的诀窍是从当月的第15天减去一个月:
$ date --date="$(date +%Y-%m-15) - 1 month"
Fri Jul 15 00:00:00 CEST 2016
然后只需使用正确的格式:
$ date --date="$(date +%Y-%m-15) - 1 month" "+%Y%m"
201607
要将值存储在var中,只需使用通用的var=$(command)
语法。
来自GNU Coreutils → 28.7 Relative items in date strings:
单位模糊可能会导致相关项目出现问题。例如, '2003-07-31 -1月'可能评估为2003-07-01,因为2003-06-31 是无效的日期。你可以更可靠地确定上个月 可以要求当月15日前的一个月。对于 例如:
$ date -R Thu, 31 Jul 2003 13:02:39 -0700 $ date --date='-1 month' +'Last month was %B?' Last month was July? $ date --date="$(date +%Y-%m-15) -1 month" +'Last month was %B!' Last month was June!
另外,在操作时钟变化周围的日期时要小心,例如 夏令时飞跃。在少数情况下,这些已经增加或减少 从时钟开始24小时,所以采用通常是明智之举 通过将TZ环境变量设置为“UTC0”之前的通用时间 开始进行日历计算。