linux date d 变量,linux date -d参数用法

最近偶为了写一个调整时间的shell而绞尽脑汁,结果在某一天

#info data

这里面看到了data -d参数的灵活用法,真是欣喜若狂。好东西要保存,整理整理:

* To print the date of the day before yesterday:

date --date='2 days ago'

* To print the date of the day three months and one day hence:

date --date='3 months 1 day'

* To print the day of year of Christmas in the current year:

date --date='25 Dec' +%j

* To print the current full month name and the day of the month:

date '+%B %d'

But this may not be what you want because for the first nine days

of the month, the `%d' expands to a zero-padded two-digit field,

for example `date -d 1may '+%B %d'' will print `May 01'.

* To print a date without the leading zero for one-digit days of the

month, you can use the (GNU extension) `-' flag to suppress the

padding altogether:

date -d 1may '+%B %-d

* To print the current date and time in the format required by many

non-GNU versions of `date' when setting the system clock:

date +%m%d%H%M%Y.%S

* To set the system clock forward by two minutes:

date --set='+2 minutes'

* To print the date in RFC 2822 format, use `date --rfc-2822'.  Here

is some example output:

Fri, 09 Sep 2005 13:51:39 -0700

* To convert a date string to the number of seconds since the epoch

(which is 1970-01-01 00:00:00 UTC), use the `--date' option with

the `%s' format.  That can be useful in sorting and/or graphing

and/or comparing data by date.  The following command outputs the

number of the seconds since the epoch for the time two minutes

after the epoch:

date --date='1970-01-01 00:02:00 +0000' +%s

date --date='1970-01-01 00:02:00 +0000' +%s

120

If you do not specify time zone information in the date string,

`date' uses your computer's idea of the time zone when

interpreting the string.  For example, if your computer's time

zone is that of Cambridge, Massachusetts, which was then 5 hours

(i.e., 18,000 seconds) behind UTC:

# local time zone used

date --date='1970-01-01 00:02:00' +%s

18120

* If you're sorting or graphing dated data, your raw date values may

be represented as seconds since the epoch.  But few people can

look at the date `946684800' and casually note "Oh, that's the

first second of the year 2000 in Greenwich, England."

date --date='2000-01-01 UTC' +%s

946684800

An alternative is to use the `--utc' (`-u') option.  Then you may

omit `UTC' from the date string.  Although this produces the same

result for `%s' and many other format sequences, with a time zone

offset different from zero, it would give a different result for

zone-dependent formats like `%z'.

date -u --date=2000-01-01 +%s

946684800

To convert such an unwieldy number of seconds back to a more

readable form, use a command like this:

# local time zone used

date -d '1970-01-01 UTC 946684800 seconds' +"%Y-%m-%d %T %z"

1999-12-31 19:00:00 -0500

Often it is better to output UTC-relative date and time:

date -u -d '1970-01-01 946684800 seconds' +"%Y-%m-%d %T %z"

2000-01-01 00:00:00 +0000

阅读(838) | 评论(0) | 转发(0) |

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值