在写程序时,经常需要去判断指定的某一天,是星期几。但遗憾的是,大多数的编程语言,支持的都不太好。也就是说,判断起来比较麻烦。

在Perl语言中,最方便的是安装Date::Calc,然后使用Day_of_Week方法,可以直接返回某一天是星期几。但需要安装Calc,比较麻烦。

可以通过这个链接下载Calc:http://sb.fluomedia.org/download/pkg/Date-Calc-XS-6.2.tar.gz

【相关的链接有很多Perl语言包的安装文件下载:http://sb.fluomedia.org/download/】

 

如果不使用Calc的话,可以使用localtime函数,返回某一天的星期。

代码如下:

#!/usr/bin/perl
use strict;
use Time::Local;

my $mon=12;
my $mday=16;
my $year=2018;

my $time=timelocal(0,0,0,$mday,$mon-1,$year);
my $wday=(localtime($time))[6];
print $wday;

对于localtime函数的返回值,也可以使用strftime函数格式化出星期几。

print strftime("星期:%u",localtime( $time ));

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 37126
%g 年份的最后两位数 (00-99) 1
%g 2001
%h 月的简称 * (和%b选项相同) Aug
%H 24 小时制 (00-23) 14
%I 12 小时制 (01-12) 2
%j 一年的第几天 (001-366) 235
%m 月 (01-12) 8
%M 分钟 (00-59) 55
%n 新行 (‘\n’)
%p 显示出AM或PM PM
%r 时间(hh:mm:ss AM或PM),12小时 * 0.621550926
%R 24 小时 HH:MM 时间格式,相等于 %H:%M 0.621527778
%S 秒数 (00-61) 2
%t 水平制表符 (‘\t’)
%T 时间(24小时制)(hh:mm:ss),相等于%H:%M:%S 0.621527778
%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 显示时间格式 * 0.621550926
%y 年,两位数 (00-99) 1
%Y 2001
%z ISO 8601与UTC的时区偏移(1 minute=1, 1 hour=100) 100
%Z 当前时区的名称,如”中国标准时间” * CDT
%% % 符号 %

本站所有内容均为原创,本站保留所有权利。在保留原始来源链接的情况下,允许非商业用途的转载。拒绝一切商业性转载。

picture loss