zl程序教程

您现在的位置是:首页 >  其他

当前栏目

perl与shell获取昨天、明天或多天前的日期的代码

日期shell代码 获取 Perl 昨天 明天
2023-06-13 09:15:25 时间

一、首先说下perl如何获取

复制代码代码如下:


#!/usr/bin/perl-w
usePOSIXqw(strftime);
my$day=strftime("%Y%m%d",localtime(time-24*3600));#获取昨天的日期

二、在Linux中对mandate-d参数说的比拟笼统,以下示例进一步解释:

#-d,--date=STRINGdisplaytimedescribedbySTRING,not`now"
[root@Gmanroot]#date-dnext-day+%Y%m%d#明天日期
20091024
[root@Gmanroot]#date-dlast-day+%Y%m%d#昨天日期
20091022
[root@Gmanroot]#date-dyesterday+%Y%m%d#昨天日期
20091022
[root@Gmanroot]#date-dtomorrow+%Y%m%d#明天日期
20091024
[root@Gmanroot]#date-dlast-month+%Y%m#上个月日期
200909
[root@Gmanroot]#date-dnext-month+%Y%m#下个月日期
200911
[root@Gmanroot]#date-dnext-year+%Y#明年日期
2010
DATE=$(date+%Y%m%d-d"2daysago")#获得2天前的日期

20111022

DATE=$(date+%Y%m%d-d"2day")#获得2天后的日期

20111026

名目:date

利用权限:所利于用者
利用措施:date[-u][-ddatestr][-sdatestr][--utc][--universal][--date=datestr][--set=datestr][--help][--version][+FORMAT][MMDDhhmm[[CC]YY][.ss]]
解释:date能用来揭示或设定系统的日期和工夫,在揭示方面,利用者能设定欲揭示的款式,款式设定为一个加号后接数个符号,其中可用的符号列表如下:
工夫方面:
%:印出
%%n:下一行
%t:跳格
%H:小时(00..23)
%I:小时(01..12)
%k:小时(0..23)
%l:小时(1..12)
%M:分钟(00..59)
%p:揭示本地AM或PM
%r:直接揭示工夫(12小时制,款式为hh:mm:ss[AP]M)
%s:从1970年1月1日00:00:00UTC到现在为止的秒数%S:秒(00..61)
%T:直接揭示工夫(24小时制)
%X:相当于%H:%M:%S
%Z:揭示时区
日期方面:
%a:礼拜几(Sun..Sat)
%A:礼拜几(Sunday..Saturday)
%b:月份(Jan..Dec)
%B:月份(January..December)
%c:直接揭示日期和工夫
%d:日(01..31)
%D:直接揭示日期(mm/dd/yy)
%h:同%b
%j:一年中的第几天(001..366)
%m:月份(01..12)
%U:一年中的第几周(00..53)(以Sunday为一周的第一天的情形)
%w:一周中的第几天(0..6)
%W:一年中的第几周(00..53)(以Monday为一周的第一天的情形)
%x:直接揭示日期(mm/dd/yy)
%y:年份的最后两位数字(00.99)
%Y:全面年份(0000..9999)
若是不以加号作为开始,则表示要设定工夫,而工夫款式为MMDDhhmm[[CC]YY][.ss],
其中MM为月份,
DD为日,
hh为小时,
mm为分钟,
CC为年份前两位数字,
YY为年份后两位数字,
ss为秒数
把计:
-ddatestr:揭示datestr中所设定的工夫(非系统工夫)
--help:揭示帮助讯息
-sdatestr:将系统工夫设为datestr中所设定的工夫
-u:揭示现在的格林威治工夫
--version:揭示版本编号
例子:
揭示工夫后跳行,再揭示现在日期:date+%T%n%D
揭示月份和日数:date+%B%d
揭示日期和设定工夫(12:34:56):date--date12:34:56
设置系统目前工夫(12:34:56):date--s12:34:56
当心:当你不渴望揭示无意义的0时(例如说1999/03/07),则能在符号中插入-符号,例如说date+%-H:%-M:%-S会把时分秒中无意义的0给去掉,像是原本的08:09:04会变为8:9:4。另外,只有获得权限者(例如说root)能力设定系统工夫。当你以root身分改动了系统工夫尔后,请记得以clock-w来将系统工夫写入CMOS中,这么下次重新开机时系统工夫才会继续抱持最新的准确值。
ntp工夫同步
linux系统下默认安装了ntp服务,手动举行ntp同步如下
ntpdatentp1.nl.net
当然,也能指定其他的ntp服务器
-------------------------------------------------------------------
伸展功能
date工具能够告终更多的工作,不但仅只是打印出目前的系统日期。您能够利用它来获得给定的日期究竟是礼拜几,并获得相对于目前日期的相对日期。打听某一天是礼拜几
GNU对date号召的另一个伸展是-d选项,当您的桌上未曾日历表时(UNIX用户无须要日历表),该选项极其有用。利用这秉功能壮大的选项,穿越将日期作为引号括起来的参数供给,您能够迅速地查明一个特定的日期究竟是礼拜几:
$date-d"nov22"
WedNov2200:00:00EST2006
$
在本示例中,您能够看到今年的11月22日是礼拜三。
因而,假想在11月22日举行一个重大的会议,您能够即刻打听到这一天是礼拜三,而这一天您将赶到驻地办公室。
获得相对日期
d选项还能够告诉您,相对于目前日期若干天的究竟是哪一天,从目前开始的若干天或若干礼拜尔后,可能过去(过去)。穿越将这个相对偏移利用引号括起来,作为-d选项的参数,就能够告终这项任务。
例如,您必需打听两礼拜尔后的日期。万一您处于Shell提醒符处,那么能够迅速地获得答案:
$date-d"2weeks"
关于利用该号召,还有其他一些重要的措施。利用next/last号召,您能够获得尔后的礼拜几是哪一天:
$date-d"nextmonday"(下周一的日期)
$date-dnext-day+%Y%m%d(明天的日期)可能:date-dtomorrow+%Y%m%d
$date-dlast-day+%Y%m%d(昨天的日期)可能:date-dyesterday+%Y%m%d
$date-dlast-month+%Y%m(上个月是几月)
$date-dnext-month+%Y%m(下个月是几月)
利用ago号召,您能够获得过去的日期:
$date-d"30daysago"(30天前的日期)
您能够利用负数以获得相反的日期:
$date-d"dec14-2weeks"(相对:dec14这个日期的两周前的日期)
$date-d"-100days"(100天过去的日期)
$date-d"50days"(50天后的日期)