154 linux bash shell-script date
我有 Linux ( RH 5.3 ) 机器
我需要添加/计算 10 天加上日期,这样我就会得到新的日期(到期日期))
例如
# date
Sun Sep 11 07:59:16 IST 2012
Run Code Online (Sandbox Code Playgroud)
所以我需要得到
NEW_expration_DATE = Sun Sep 21 07:59:16 IST 2012
Run Code Online (Sandbox Code Playgroud)
请建议如何计算新的到期日期(使用 bash 、 ksh 或操纵日期命令?)
小智 211
您可以只使用-d开关并提供要计算的日期
date
Sun Sep 23 08:19:56 BST 2012
NEW_expration_DATE=$(date -d "+10 days")
echo $NEW_expration_DATE
Wed Oct 3 08:12:33 BST 2012
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)-d, --date=STRING display time described by STRING, not ‘now’
这是一个非常强大的工具,因为您可以执行以下操作
date -d "Sun Sep 11 07:59:16 IST 2012+10 days"
Fri Sep 21 03:29:16 BST 2012
Run Code Online (Sandbox Code Playgroud)
或者
TZ=IST date -d "Sun Sep 11 07:59:16 IST 2012+10 days"
Fri Sep 21 07:59:16 IST 2012
Run Code Online (Sandbox Code Playgroud)
或者
prog_end_date=`date '+%C%y%m%d' -d "$end_date+10 days"`
Run Code Online (Sandbox Code Playgroud)
所以如果 $end_date=20131001 那么 $prog_end_date=20131011
小智 28
$ date -v -1d
Run Code Online (Sandbox Code Playgroud)
为了使用 date 命令获得 1 天的回溯日期:
$ date -v -1d
Run Code Online (Sandbox Code Playgroud)
它会给 (current date -1) 表示 1 天前。
$ date -v +1d
Run Code Online (Sandbox Code Playgroud)
这将给 (current date +1) 表示 1 天后。
类似地,可以使用以下编写的代码代替“d”来找出年、月等。
y-Year
m-Month
w-Week
d-Day
H-Hour
M-Minute
S-Second
Run Code Online (Sandbox Code Playgroud)
date由于时区混乱,我放弃了 GNU命令,转而使用 python。
python -c "import datetime, dateutil.parser; print((dateutil.parser.parse(\"$myDate\") + datetime.timedelta(days=10)).isoformat())"
Run Code Online (Sandbox Code Playgroud)
也许这有点矫枉过正,但它很容易阅读、理解和根据需要进行修改。
dateutil.parser.parse不是 python 标准库的一部分,所以你必须pip install dateutil;或者您可以使用datetime.datetime.fromisoformat,但您需要更加小心格式。