php判断是当年的第几天,php 判断今日是本月的第几个星期几本年的第几周

有一些节日定为某月的第几个星期几,如世界海事日定在每年的九月第五个星期天、国际住房日定在十月份的第一个星期一、十一月份的第四个星期四则是感恩节(加拿大是十月份的第二个星期一),为此,要知道今天是不是某个这类节日,有必要计算今天是本月的第几个星期几。

在php里,有一些很容易的方法知道今天是星期几,用date()函数就很方便:

$w_day=date("w");

通过“w”参数date()函数取出的是从0到6的正整数值,0表示星期日,6表示星期六。

然而无法从中知道是本月的第几个星期几。这需要设计一个算法。思路是:利用日期(即几号)和一周的总天数(7天)的关系,借用ceil()函数直接得出今天是本月的第几个星期几。ceil()函数用于计算大于指定数(浮点数,float

number)的最小整数,结果不足1的视为1。比如:

假设某月3日是星期四,那么,ceil(3/7) 的值将为1,这表明这一天是该月的第一个星期四。下一个星期四的计算式子是

ceil(10/7),其值为2,表明10日是第二个星期四。其他的依次类推。依此,第几个星期几的计算公式设定为:ceil(日期/7)。

获得日期(几号)与获得星期几一个简单,用date()函数加“j”参数即可:date("j")。以下是计算今天是本月第几个星期几的完整的代码,代码中加入了星期几的汉语显示格式化处理机制以规范星期几的表达:

/* 功 能: 计算今日是当月的第几个星期几

文件名: 1000php.php

编 写: 宋益谦

$wk_day=date("w"); //得到星期几

$date_now=date("j"); //得到几号

$wkday_ar=array("日","一","二","三","四","五","六"); //规范化周日的表达

$cal_result=ceil($date_now/7); //计算是第几个星期几

//信息字串

$str=date("Y年n月j日")." 星期".$wkday_ar[$wk_day]." - 本月的第

".$cal_result." 个星期".$wkday_ar[$wk_day];

echo $str; //打印信息

?>

运行以上代码,将得到预期的结果。以下是今日[2009年7月15日]的信息:

2009年7月15日 星期三 - 本月的第 3 个星期三

使用方式 :

date [-u] [-d datestr] [-s datestr] [--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:00 UTC 到目前为止的秒数

%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 为秒数

把计 :

-d datestr : 显示 datestr 中所设定的时间 (非系统时间)

--help : 显示辅助讯息

-s datestr : 将系统时间设为 datestr 中所设定的时间

-u : 显示目前的格林威治时间

--version : 显示版本编号

例子 :

显示时间后跳行,再显示目前日期 :

date +%T%n%D

显示月份与日数 :

date +%B %d

显示日期与设定时间(12:34:56) :

date --date 12:34:56

注意 :

当你不希望出现无意义的 0 时(比如说 1999/03/07),则可以在标记中插入 - 符号,比如说 date

+%-H:%-M:%-S 会把时分秒中无意义的 0 给去掉,像是原本的 08:09:04 会变为

8:9:4。另外,只有取得权限者(比如说 root)才能设定系统时间。

当你以 root 身份更改了系统时间之后,请记得以 clock -w 来将系统时间写入 CMOS

中,这样下次重新开机时系统时间才会持续抱持最新的正确值。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值