shell中date函数的使用

date几种常用的时间转换

此文为转载,出处:http://blog.csdn.net/hittata/article/details/7187692

1)使用date获得一个具体的时间

平时需要生成例如像“2015-04-06” 或者 “2015-04-06 00:00:00” 或者像当前时间的随机时间,需要借助shell中的date函数。具体如下:

如果需要获得shortDate类型,可以将date类型格式化为:
[root@localhost lily]# date +"%Y-%m-%d"
2015-04-07
[root@localhost lily]# date +"%Y-%m-%d %H:%M:%S"
2015-04-06 20:00:43
[root@localhost lily]# date +"%Y-%m-%d %H:%M:%S" -d "+10hour"
2015-04-07 06:00:56
[root@localhost lily]# date +"%Y-%m-%d %H:%M:%S" -d "+24hour"
2015-04-07 20:00:43
[root@localhost lily]# date +"%Y-%m-%d %H:%M:%S" -d "-24hour"
2015-04-05 20:00:43
[root@localhost lily]# date +"%Y-%m-%d %H:%M:%S" -d "-20minute"
2015-04-06 19:43:44
[root@localhost lily]# date +"%Y-%m-%d %H:%M:%S" -d "+20minute"
2015-04-06 20:23:44
[root@localhost lily]# date +"%Y-%m-%d %H:%M:%S" -d "+2day"
2015-04-08 19:43:44
[root@localhost lily]# date +"%Y-%m-%d %H:%M:%S" -d "-2day"
2015-04-04 19:43:44
[root@localhost lily]# date +"%Y-%m-%d %H:%M:%S" -d "-2month"
2015-02-06 19:43:44
[root@localhost lily]# date +"%Y-%m-%d %H:%M:%S" -d "+2month"
2015-06-06 19:43:44
[root@localhost lily]# date +"%Y-%m-%d %H:%M:%S" -d "+2year"
2017-04-06 19:43:44
[root@localhost lily]# date +"%Y-%m-%d %H:%M:%S" -d "-2year"
2013-04-06 19:43:44
 

 

2)使用date获得一个随机的时间

例如:当前时间为2015-04-07,获取30天内的随机时间
精确到日期:
date +"%Y-%m-%d" -d "+$(($RANDOM%30)) days"
2015-05-05
精确到秒:
date +"%Y-%m-%d %H:%M:%S" -d "+$(($RANDOM%30)) days"
2015-04-08 11:24:40


 
 
 3)使用date获取一个随机的数值,作为获取随机数的基数 
[chengmo@centos5  shell]$ date +%s
1287764773
#获得时间戳,当前到:1970-01-01 00:00:00 相隔的秒数
#如果用它做随机数,相同一秒的数据是一样的。在做循环处理,多线程里面基本不能满足要求了。
 
[chengmo@centos5  shell]$ date +%N
738710457
#获得当前时间的纳秒数据,精确到亿分之一秒。
#这个相当精确了,就算在多cpu,大量循环里面,同一秒里面,也很难出现相同结果,不过不同时间里面还会有大量重复碰撞
 
[chengmo@centos5  shell]$ date +%s%N
1287764807051101270
#这个可以说比较完美了,加入了时间戳,又加上了纳秒

4)时间戳和字符串相互转换

用shell将时间字符串与时间戳互转:
      date -d "2010-10-18 00:00:00" +%s         输出形如:1287331200
而时间戳转换为字符串可以这样做:
      date -d @1287331200  "+%Y-%m-%d"    输出形如:2010-10-18
如果需要得到指定日期的前后几天,可以:
      1、seconds=`date -d "2010-10-18 00:00:00" +%s`       #得到时间戳
      2、seconds_new=`expr $seconds + 86400`                   #加上一天的秒数86400
      3、date_new=`date -d @$seconds_new "+%Y-%m-%d"`   #获得指定日前加上一天的日前

转载出处:http://www.cnblogs.com/chengmo/archive/2010/10/23/1858879.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值