格式化数字字符串到目前为止

时间:2014-02-16 12:15:39

标签: bash date variables sh

在bash脚本中,我有一个变量,如:

date=20140131

这意味着2014年1月31日。如何添加一天?我的意思是如何在“日期”中添加一个值,将其更改为“ 20140201 ”(1 Fab 2014)而不是“ 20140132

4 个答案:

答案 0 :(得分:1)

你去:

kent$  echo $d
20140131

kent$  date -d"$d +1 day" +%Y%m%d
20140201

答案 1 :(得分:1)

嗯,您需要使用GNU/date,而不是标准的unix日期,因为它实现了与原始unix日期不同的日期算术,然后您需要做的就是:

% date=20140131
% date -d "$date + 1 day"
Sat Feb  1 00:00:00 CET 2014

如果您想避免任何格式问题,可以使用以下方式指定格式:

% date -d "$date + 1 day" '+%Y%m%d' 
20140201

有一些关于玩gnu / date算术的文章:

答案 2 :(得分:1)

试试这个解决方案:

我先误解了

<强>更新

#!/bin/bash                                                                                                                                                                      
datee="20140131"
DATE=`date -d"$datee +1 day" +%Y%m%d`
echo $DATE

#!/bin/bash                                                                                                                                                                      
datee="20140131"
DATE=$(date -d"$datee +1 day" +%Y%m%d)
echo $DATE

结果是:

20140201

答案 3 :(得分:1)

GNU date

$  d=20140131
$  date -d "$d +1 day" +%Y%m%d

20140201 

如果您没有gnu date,这里是我主要使用的脚本(请参阅http://www.unix.com/16559-post2.html

所以,如果你需要在20140131的第二天获得,你可以运行:

datecalc -a 2014 01 31 + 1