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

