shell date 扩展功能(-d参数)

扩展功能 
date 工具可以完成更多的工作,不仅仅只是打印出当前的系统日期。您可以使用它来得到给定的日期究竟是星期几,并得到相对于当前日期的相对日期。了解某一天是星期几 
GNU 对 date 命令的另一个扩展是 -d 选项,当您的桌上没有日历表时(UNIX 用户不需要日历表),该选项非常有用。使用这个功能强大的选项,通过将日期作为引号括起来的参数提供,您可以快速地查明一个特定的日期究竟是星期几: 
$ date -d "nov 22" 
Wed Nov 22 00:00:00 EST 2006 

在本示例中,您可以看到今年的 11 月 22 日是星期三。 
所以,假设在 11 月 22 日召开一个重大的会议,您可以立即了解到这一天是星期三,而这一天您将赶到驻地办公室。 
获得相对日期 
d 选项还可以告诉您,相对于 当前日期若干天的究竟是哪一天,从现在开始的若干天或若干星期以后,或者以前(过去)。通过将这个相对偏移使用引号括起来,作为 -d 选项的参数,就可以完成这项任务。 
例如,您需要了解两星期以后的日期。如果您处于 Shell 提示符处,那么可以迅速地得到答案: 
$ date -d ’2 weeks’ 
关于使用该命令,还有其他一些重要的方法。使用 next/last指令,您可以得到以后的星期几是哪一天: 
$ date -d ’next monday’ (下周一的日期) 
$ date -d next-day +%Y%m%d(明天的日期)或者:date -d tomorrow +%Y%m%d 
$ date -d last-day +%Y%m%d(昨天的日期) 或者:date -d yesterday +%Y%m%d 
$ date -d last-month +%Y%m(上个月是几月) 
$ date -d next-month +%Y%m(下个月是几月) 
使用 ago 指令,您可以得到过去的日期: 
$ date -d ’30 days ago’ (30天前的日期) 
您可以使用负数以得到相反的日期: 
$ date -d ’dec 14 -2 weeks’ (相对:dec 14这个日期的两周前的日期) 
$ date -d ’-100 days’ (100天以前的日期) 

我是一个写得代码,算的算法,做得架构,打得过产品的程序媛,目前就职于滴滴,扫码关注我,回复"内推",和我一起奔涌吧。

 

$ date -d ’50 days’(50天后的日期) 
这个技巧非常有用,它可以根据将来的日期为自己设置提醒,可能是在脚本或 Shell 启动文件中,如下所示: 
DAY=`date -d ’2 weeks’ +"%b %d"` 
if test "`echo $DAY`" = "Aug 16"; then echo ’Product launch is now two weeks away!’; fi 

==========================================================================

echo "Today is `date +%Y%m%d`!"


echo "Yesterday is `date --date='1 day ago' +%Y%m%d`!"
echo "Yesterday is `date --date='1 days ago' +%Y%m%d`!"
echo "Yesterday is `date --date='-1day' +%Y%m%d`!"


echo "Tomorrow is `date --date='+1 day' +%Y%m%d`!"


echo "Today is `date +%Y-%m-15`!"


echo "Today is `date --date='-1 month'`"
echo   `date --date='-1 month' +'Last month was %B?'`

echo "`date --date="$(date +%Y-%m-15) -1 month" +'Last month was %B!' `"

注意:$(date +%Y-%m-15) -1 month 这个是个变量,所以必须用(“”)括起来,尽管最外面有(“”),但是还是不能够换成(‘’)

 

============================================================================================

date命令如何获得上星期的日期?

lastmonth=`date +%Y-%m --date="-1 month"`"-01";

然后 awk -v 作为一个参数这样传进去简单点。

#date -d "-1 week" "+%Y%m%d %A"

举一反三:date命令获得前天,昨天,明天,后天,上个月,下个月的日期

    date -d "-2 day" "+%Y%m%d %A"   或 date --date="2 days ago" "+%Y%m%d %A"

    date -d "-1 day" "+%Y%m%d %A"   或 date --date="1 day ago" "+%Y%m%d %A"

    date -d "1 day" "+%Y%m%d %A"

    date -d "2 day" "+%Y%m%d %A"

    date -d "-1 month" "+%Y%m%d %A"

    date -d "1 month" "+%Y%m%d %A"

echo `date -d "-1 month" "+%Y-%m-%d %X"`

 

还有其他用法:

date +%s   可以得到UNIX的时间戳;

======================================================================================

输出昨天日期

date -d "1 day ago" +"%Y-%m-%d"
2016-11-29

2秒后输出

时间戳类型的 输出对应的1234567890秒

date -d "1970-01-01 1234567890 seconds" +"%Y-%m-%d %H:%m:%S" 
2009-02-13 23:02:30

普通格式

date -d "2016-11-30" +"%Y/%m/%d %H:%M.%S" 
2016/11/30 00:00.00

apache格式转换:

date -d "Nov 30, 2016 12:00:37" +"%Y-%m-%d %H:%M.%S"
2016-11-30 12:00.37

格式转换后时间游走:

date -d "Nov 30, 2016 12:00:37 AM 2 year ago" +"%Y-%m-%d %H:%M.%S"
2014-11-30 00:00.37
  • 加减操作
date +%Y%m%d //显示前天年月日 
date -d "+1 day" +%Y%m%d //显示前一天的日期 
date -d "-1 day" +%Y%m%d //显示后一天的日期 
date -d "-1 month" +%Y%m%d //显示上一月的日期 
date -d "+1 month" +%Y%m%d //显示下一月的日期 
date -d "-1 year" +%Y%m%d //显示前一年的日期 
date -d "+1 year" +%Y%m%d //显示下一年的日期
  • 9
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: "shell date -d" 是一个 Linux 命令,用于显示或设置日期和时间。其中 "-d" 选项用于指定日期和时间的格式。可以使用不同的参数来指定日期和时间,例如: - "now":显示当前日期和时间。 - "yesterday":显示昨天的日期。 - "tomorrow":显示明天的日期。 - "next week":显示下周的日期。 - "2 days ago":显示两天前的日期。 - "3 months ago":显示三个月前的日期。 - "1 year ago":显示一年前的日期。 使用这个命令可以方便地获取或设置日期和时间,对于一些需要时间计算的任务非常有用。 ### 回答2: shell date -d 是一个在shell脚本中用于将日期字符串转化为指定日期格式的命令。这个命令可以让用户在shell中使用指定的语法来实现日期的各种转换,包括将日期字符串转换为Unix时间戳,将日期格式转化为另一种时间格式,并且支持将指定日期偏移指定数量的时间。 date -d的语法如下: date -d "[日期字符串][偏移量]" "+[转换格式]" 其中,日期字符串和偏移量可以用于指定要处理的日期,转换格式参数可以指定要将日期转换为的目标格式。 例如,执行以下命令,可以将日期2019-05-22转化为Unix时间戳: date -d "2019-05-22" +%s 在这个例子中,我们使用日期字符串"2019-05-22"指定了处理的日期,%s表示转换为Unix时间戳格式。 除此之外,date -d还支持将指定日期偏移指定数量的时间,比如下面这个命令将日期2022年1月1日偏移10天,并将结果输出为2022年1月11日格式的日期字符串: date -d "2022-1-1 +10 days" +%Y-%m-%d 在这个命令中,我们使用“+10 days”选项来指定了日期的偏移量,将日期偏移10天。%Y-%m-%d表示将日期格式化为年-月-日的格式。将这两者组合在一起,即可得到偏移后的日期字符串。 总的来说,date -d是一个非常强大和灵活的日期转换命令,可以满足用户在shell脚本中进行日期相关操作的需求。使用这个命令,可以轻松地完成各种格式的日期转换和计算,大大提高了shell脚本的实用性和可读性。 ### 回答3: Shell date -d是一个用于处理日期和时间的命令。它可以用来计算某个日期的前后几天,将日期格式化为不同的格式等。 首先,date命令用于显示当前时间和日期。例如: ``` $ date Tue Aug 17 15:23:50 CST 2021 ``` -d选项用于指定日期,可以是相对于当前日期的天数,也可以是格式化后的日期字符串。例如: ``` $ date -d "tomorrow" Wed Aug 18 00:00:00 CST 2021 ``` 这将计算出明天的日期并显示出来。 ``` $ date -d "2 days ago" Sun Aug 15 00:00:00 CST 2021 ``` 这将计算两天前的日期并显示出来。 ``` $ date -d "2022-01-01" Sat Jan 1 00:00:00 CST 2022 ``` 这将把日期字符串格式化为指定的日期格式。 除了上面的用法外,date命令还可以用于计算时间差、显示时区等操作。例如: ``` $ date -d "2022-01-01 12:00:00" +%s 1641033600 ``` 这将计算出指定时间与Unix纪元时间(1970年1月1日00:00:00 UTC)之间的秒数。 至此,我们已经了解了Shell date -d命令的用法和一些常见的示例。在实际应用中,我们可以根据需要进行灵活使用,以便更好地处理日期和时间。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值