无论使用哪种语言,日期/时间都是一个非常重要的值。比如我们保存日志的时候,往往是某个前缀加上当前时间,这样日志文件名就可以唯一。在Shell环境下,我们用来获取时间的命令是date,但是date输出的时间和日期的格式和内容可能不是我们想要的,所以我们可能需要对其进行一些格式化输出。常用的时间字段如下:%Y年(例如:1970、2018等)%m月(01..12)%d日(01..31)%H时(00..23)%M分钟(00..59)%S秒(00..59)使用不带参数的date命令获取当前日期和时间。这样得到的时间一般是CST标准格式的时间。[alvin@VM_0_16_centos~]$dateSatNov322:01:57CST2018获取具体格式,命令为:date+'format',注意这里区分大小写。[alvin@VM_0_16_centos~]$date+'%Y-%m-%d'2018-11-03[alvin@VM_0_16_centos~]$date+'%Y/%m/%d%H:%M:%S'2018/11/0322:08:14获取昨天的日期。可以将-d选项添加到上述命令中。[alvin@VM_0_16_centos~]$date-d'yesterday'+'%Y/%m/%d%H:%M:%S'2018/11/0222:24:31或[alvin@VM_0_16_centos~]$date-d'today-1day'+'%Y-%m-%d'2018-11-04获取当前时间的前一小时[alvin@VM_0_16_centos~]$date-d'today-1hour'+'%Y%获取m%d%H'2018110414或[alvin@VM_0_16_centos~]$date+'%Y-%m-%d%H:%M:%S'-d'-1hours'2018-11-0414:43:38指定日期的前一天。这实际上是在询问相对时间。比如下面是国庆前一天的日期:[alvin@VM_0_16_centos~]$date-d'20181001-1day'+'%Y%m%d'20180930把日期转换成时间戳:[alvin@VM_0_16_centos~]$date-d"Nov415:49:41CST2018"+%s1541317781将时间戳转换回日期:[alvin@VM_0_16_centos~]$date-d@1541317781SunNov415:49:41CST2018将时间戳转换为日期并显示具体格式为:[alvin@VM_0_16_centos~]$date-d@1541317781+'%Y%m%d%H:%M:%S'2018110415:49:41本文经授权转载自公众号《良序Linux》。世界500强外企Linux开发工程师梁旭,在公众号分享大量Linux干货,欢迎关注!
