Perl 时间日期

Perl 时间日期

本章节我们为大家介绍 Perl 语言对时间日期的处理。

Perl中处理时间的函数有如下几种:

  • 1、time() 函数:返回从1970年1月1日起累计的秒数
  • 2、localtime() 函数:获取本地时区时间
  • 3、gmtime() 函数: 获取格林威治时间

当前时间和日期

接下来让我们看下 localtime() 函数,该函数在没有参数的情况下返回当前的时间和日期。

以下 9 个符号代表不同的时间日期参数:



sec,     # 秒, 0 到 61
min,     # 分钟, 0 到 59
hour,    # 小时, 0 到 24
mday,    # 天, 1 到 31
mon,     # 月, 0 到 11
year,    # 年,从 1900 开始
wday,    # 星期几,0-6,0表示周日
yday,    # 一年中的第几天,0-364,365
isdst    # 如果夏令时有效,则为真

实例演示如下:

实例

#!/usr/bin/perl
 
@months = qw( 一月 二月 三月 四月 五月 六月 七月 八月 九月 十月 十一月 十二月 );
@days = qw(星期天 星期一 星期二 星期三 星期四 星期五 星期六);
 
(sec,min,hour,mday,mon,year,wday,yday,isdst) = localtime();
print "mday months[mon] days[wday]\n";

以上实例执行输出结果为:

12 六月 星期天

如果直接调用 localtime() ,它返回系统当期设置时区的时间,实例如下:

实例



#!/usr/bin/perl
 
datestring = localtime();
print "时间日期为:datestring\n";

以上实例执行输出结果为:

时间日期为:Sun Jun 12 11:27:31 2016

格林威治时间 (GMT)

函数 gmtime() 与 localtime() 类似,但它返回标准格林威治时间。

实例

#!/usr/bin/perl
 
local_datestring = localtime();
print "本地时间日期为:local_datestring\n";
 
gmt_datestring = gmtime();
print "GMT 时间日期为:gmt_datestring\n";

以上实例执行输出结果为:



本地时间日期为:Sun Jun 12 11:32:14 2016
GMT 时间日期为:Sun Jun 12 03:32:14 2016

从实例中我们可以看出,中国的时间和格林威治时间相差了8小时。


格式化日期和时间

我们可以使用 localtime() 函数的 9 个时间元素来输出需要制定的格式时间。格式化输出使用 printf() 函数:

实例

#!/usr/bin/perl
 
(sec,min,hour,mday,mon,year,wday,yday,isdst) = localtime();
 
printf("格式化时间:HH:MM:SS\n");
printf("%02d:%02d:%02d",hour, min,sec);

以上实例执行输出结果为:

格式化时间:HH:MM:SS
11:35:23

新纪元时间(Epoch Time)

我们可以使用 time() 函数来获取新纪元时间,该函数返回从1970年1月1日起累计的秒数。实例如下:

实例

#!/usr/bin/perl
 
epoc = time();
 
print "从1970年1月1日起累计的秒数为:epoc\n";

以上实例执行输出结果为:

从1970年1月1日起累计的秒数为:1465702883

我们可以输出一个我们想要的时间格式:

实例

#!/usr/bin/perl
 
(sec,min,hour,mday,mon,year,wday,yday,isdst) = localtime();
print "当期时间和日期:";
printf("%d-%d-%d %d:%d:%d",year+1900,mon+1,mday,hour,min,sec);
 
print "\n";epoc = time();
epoc =epoc - 24 * 60 * 60;   # 一天前的时间秒数
(sec,min,hour,mday,mon,year,wday,yday,isdst) = localtime(epoc);
print "昨天时间和日期:";
printf("%d-%d-%d %d:%d:%d",year+1900,mon+1,mday,hour,min,sec);
 
print "\n";

以上实例执行输出结果为:

当期时间和日期:2017-3-15 12:47:54
昨天时间和日期:2017-3-14 12:47:54

POSIX 函数 strftime()

函数 strftime() 可以将时间格式化为我们想要的格式。

下表列出了一些格式化的符号,* 号表示想要依赖本地时间:

符号 描述 实例
%a 星期几的简称( Sun..Sat) * Thu
%A 星期几的全称( Sunday..Saturday) * Thursday
%b 月的简称(Jan..Dec) * Aug
%B 月的全称(January..December) * August
%c 日期和时间 * Thu Aug 23 14:55:02 2001
%C 年份除于100,并取整 (00-99) 20
%d 一个月的第几天 (01-31) 23
%D 日期, MM/DD/YY 相等于%m/%d/%y 08/23/01
%e 一个月的第几天,使用空格填充个位数 ( 1-31) 23
%F YYYY-MM-DD 的简写类似于 %Y-%m-%d 2001-08-23
%g 年份的最后两位数 (00-99) 01
%g 2001
%h 月的简称 * (和%b选项相同) Aug
%H 24 小时制 (00-23) 14
%I 12 小时制 (01-12) 02
%j 一年的第几天 (001-366) 235
%m 月 (01-12) 08
%M 分钟 (00-59) 55
%n 新行 ('\n')
%p 显示出AM或PM PM
%r 时间(hh:mm:ss AM或PM),12小时
*
02:55:02 pm
%R 24 小时 HH:MM 时间格式,相等于 %H:%M 14:55
%S 秒数 (00-61) 02
%t 水平制表符 ('\t')
%T 时间(24小时制)(hh:mm:ss),相等于%H:%M:%S 14:55
%u ISO 8601 的星期几格式,星期一为1 (1-7) 4
%U 一年中的第几周,星期天为第一天(00-53) 33
%V ISO 8601 第几周 (00-53) 34
%w 一个星期的第几天(0代表星期天) (0-6) 4
%W 一年的第几个星期,星期一为第一天 (00-53) 34
%x 显示日期的格式(mm/dd/yy) * 08/23/01
%X 显示时间格式 * 14:55:02
%y 年,两位数 (00-99) 01
%Y 2001
%z ISO 8601与UTC的时区偏移(1 minute=1, 1 hour=100)

+100
%Z 当前时区的名称,如”中国标准时间” *

CDT
%% % 符号 %

实例

#!/usr/bin/perl
use POSIX qw(strftime);
 
datestring = strftime "%Y-%m-%d %H:%M:%S", localtime;
printf("时间日期 -datestring\n");
 
#  GMT 格式化时间日期
datestring = strftime "%Y-%m-%d %H:%M:%S", gmtime;
printf("时间日期 -datestring\n");

以上实例执行输出结果为:

时间日期 - 2016-06-12 12:15:13
时间日期 - 2016-06-12 04:15:13


Perl 教程
Perl 教程Perl 安装配置第一个 Perl 程序Perl 语法Perl 中的数据类型Perl 变量Perl 局部和全局变量Perl 中的标量Perl use strict和use warningsPerl 列表和数组Perl 中的哈希Perl 运算符Perl 中的条件语句Perl 中的if语句Perl 中的if-else语句perl 中的if-elsif-else语句Perl 中的unless语句Perl 中的unless-else语句Perl 中的 Switch CasePerl 中的 given-when-default 语句Perl 中的循环和循环控制语句Perl 中的 for 循环Perl while 循环Perl do-while 循环Perl foreach 循环Perl 中的until循环Perl 中的子程序Perl 字符串Perl 字符串转义序列Perl BarewordsPerl 比较文件的内容Perl 根据行号显示文件内容Perl 加密和解密Perl 错误处理Perl 格式Perl 函数签名Perl Hello World程序Perl 简介编写Perl代码的模式使用Perl的数字猜测游戏Perl 面向对象的编程(OOPs)Perl 包Perl abs()函数Perl 使用文件全局访问一个目录Perl Regex中的锚点Perl 向文件追加内容Perl 数组 pop() 函数Perl 数组切片Perl 数组 (push、pop、shift、unshift)Perl 数组Perl Regex中的断言Perl atan2() 函数Perl 自动加载(AUTOLOAD)功能Perl 字符串到数字的自动转换或铸造Perl 引用中的自生现象Perl 正则表达式中的回溯操作Perl Perl程序的基本语法Perl 布尔值Perl 调试器的中断点Perl CGI编程Perl chomp()函数Perl chop()函数Perl chr()函数Perl OOP中的类Perl cmp 操作符Perl 比较标量Perl 构造函数和析构函数Perl cos()函数Perl 计算文本中单词的频率Perl 创建Excel文件Perl 数据类型Perl 日期和时间Perl DBI(数据库独立接口)模块集Perl 分支 (if, if-else, Nested-if, if-elsif ladder, unless, unless-else, unless-elsif)Perl defined()函数Perl delete()函数Perl 带有CRUD操作的目录Perl 用调试器显示变量值Perl each() 函数Perl 正则表达式中的'e'修改器Perl 正则表达式中的'ee'修改器Perl OOPs中的封装Perl eq运算符Perl exists() 函数Perl 从脚本中退出Perl exp函数Perl 使用Regex从一个字符串中提取IP地址Perl 文件处理简介Perl 文件输入输出功能Perl 文件锁定Perl 文件测试运算符Perl CGI中的文件上传Perl 查找文件和目录Perl ge运算符Perl CGI中的GET与POSTPerl getc函数Perl 获取一个数组的元素数Perl given-when 语句Perl glob()函数Perl goto 语句Perl grep()函数Perl Regex中的分组和交替法Perl gt运算符Perl 标量和列表背景下的哈希值Perl 哈希操作Perl HashPerl 哈希值Perl hex函数Perl 实现一个队列Perl 实现一个堆栈Perl index() 函数Perl OOPs中的继承性Perl 在Windows、Linux和MacOS中的安装和环境设置Perl int()函数Perl join()函数Perl keys() 函数Perl 循环中的lastPerl lc()函数用于小写转换Perl lcfirst()函数Perl le运算符Perl length()函数Perl 调试器中的行操作命令Perl 列表及其类型Perl 列表的上下文敏感度Perl 列表函数Perl log() 函数Perl 循环 for, foreach, while, do...while, until, 嵌套循环Perl lt运算符Perl 匹配运算符
Perl 基础教程
Perl 简介Perl 环境安装Perl 基础语法Perl 数据类型Perl 变量Perl 标量Perl 数组Perl 哈希Perl 条件语句Perl 循环Perl 运算符Perl 时间日期Perl 子程序(函数)Perl 引用Perl 格式化输出Perl 文件操作Perl 目录操作Perl 错误处理Perl 特殊变量Perl 正则表达式Perl Socket 编程Perl 面向对象Perl 包和模块Perl 进程管理Perl POD 文档Perl while 循环Perl until 循环Perl for 循环Perl foreach 循环Perl do…while 循环Perl 循环嵌套Perl next 语句Perl last 语句Perl continue 语句Perl redo 语句Perl goto 语句Perl IF 语句Perl IF…ELSE 语句Perl IF…ELSIF 语句Perl UNLESS 语句Perl UNLESS…ELSE 语句Perl UNLESS…ELSIF 语句Perl switch 语句
Perl 问答
Perl 和 Ruby 的区别