做一个勇于分享的php园丁

PHP开发园地

PHP中如何找到周、月或者年中的某一天

在PHP中我们可以找到一年中的某一天,或者某个星期,或者一周、一个月中的某一天。例如,我们利用PHP在每个星期一或者每个月的第一天输出特别的信息。

在date()或strftime()函数中使用适当的参数即可找到周、月及年中的某一天,如下代码所示:

<?php
print strftime("Today is day %d of the month and %j of the year.");
print 'Today is day '.date('d').' of the month and '.date('z').' of the year.';
?>

函数date()和strftime()的运算机制并不相同。对于date()来说,一年的第一天用0表示,而strftime()则用1来表示一年中的第一天。下表包含了date()和strftime()函数能够理解的所有日和周的数值格式字符。

Type      strftime()        date()       Description                                    Range                Windows
Day        %d                d               一月中的第几天,数字                    01-31                 是
Day        %e                                一月中的第几天,数字。
                                                 一位数字前会加上一个空格                1-31                   否
Day        %j                 z               一年中的第几天,数字                    001-366 for
                                                                                                    strftime();
                                                                                                    0-365 for date()    是
Day        %u                N             一周中的第几天,数字
                                                (1表示周一)                                    1-7                      否
Day        %w               w             一周中的第几天,
                                                 (0表示周日)                                   0-6                      是
Day                             j              一月中的第几天,数字。
                                                无前导零                                        1-31                     否
Day                            S             一月中第几天的英文后缀文本                                         否
Week      %a               D            简写的周名,当前地区的文本形式                                   是
Week      %A              l              完整的周名,当前地区的文本形式                                   是
Week      %U                            一年中的第几周,数字。
                                               第一周的周日是该周第一天                  00-53                   是
Week      %V              W           ISO 8601:1988标准规定的
                                               一年中第几周,数字。周1
                                               表示一年中的第一周,该周
                                               至少有4天位于当年中。周一
                                               是该周的第一天                                 01-53                   否
Week      %W                           一年中的第几周,数字。周一
                                               是第一周的第一天                              00-53                   是

要想只在周一的时候输出一些信息,可以在date()函数中使用格式化字符w或者在strftime()函数中使用%w字符串,如下例所示。

<?php
if (1 == date('w')) {
print "Welcome to the beginning of your work week.";
}
if (1 == strftime('%w')) {
print "Only 4 more days until the weekend!";
}

可以用不同的方式来计算周的数值和一周中某一天的数值,所以在选择适当的方法时必须谨慎一些。ISO标准(ISO8601)中规定,每周以周一作为第一天,而且每周中的7天用数字1(周一)-7(周日)来表示。数字1所表示的那一周是指一年中第一个带有周二的那一周。也就是说,一年中的第一周必须有多数天属于这一年。而表示一年中周的范围是从01-53。

另一种表示周的标准范围是从00-53,在这种标准下,一年中的第53周潜在地会与下一年的第00周中的某些天重合。

只要你在自己的程序中保持前后使用的方法和标准一致,就不会有问题,但是当你的程序需要同其他PHP程序或者数据库相互操作时,则必须当心一些。例如,MySQL的DAYOFWEEK()函数将周日作为一周中的第一天,但表示周几的数值也是1~7,而且这也是ODBC的标准。然而,其WEEKDAY()函数,却将周一作为每周的第一天,而周几对应的数字值却是0~6。其WEEK()函数可以让你来选择一周的第一天是周日还是周一,但这个函数却与ISO标准不兼容。

标签: PHP
Posted by php园丁 @ 2012-2-20 10:25:19 阅读(117) 评论(0)
上一篇:PHP中计算两个日期的时间差
下一篇:PHP中checkdate日期验证方法详解

我也来参与讨论

你还可以输入600/600个字符 发表评论
称呼: (必填) 登录 | 开通博客
邮箱: (选填) 你的邮箱地址不会被公开
网站: (选填)
验证码: (必填)
看不清换一张 看不清楚换一张