PHP开发实例大全(提高卷) 中文完整pdf扫描版[244MB]
- PHP函数查询参考手册之Calendar+Date|Time篇
摘自http://www.w3school.com.cn/php/php_functions.asp
PHP 的 windows 版本已内建了对日历扩展的支持。因此,Calendar 函数会自动工作。
不过,如果您运行的是 PHP 的 Linux 版本,就不得不通过 --enable-calendar 编译 PHP,这样日历函数才能工作
注释:如需在日历格式之间转换,首先须转换为Julian day count,再转换为日历格式
cal_days_in_month(calendar,month,year)针对指定的年份和日历,返回一个月中的天数
$d=cal_days_in_month(CAL_GREGORIAN,3,2011);
echo("There was $d days in March 2011");//There was 31 days in October 2011
cal_from_jd(jd,calendar)把儒略日计数转换为指定历法的日期
$d=unixtojd(mktime(0,0,0,3,16,2011));
print_r(cal_from_jd($d,CAL_GREGORIAN));// Array ( [date] => 3/16/2011 [month] => 3 [day] => 16 [year] => 2011 [dow] => 3 [abbrevdayname] => Wed [dayname] => Wednesday [abbrevmonth] => Mar [monthname] => March )
cal_from_jd(jd,calendar)返回一个数组,其中包含了关于给定历法的信息
$calinfo=cal_info(0);
print_r($calinfo);// Array ( [months] => Array ( [1] => January [2] => February [3] => March [4] => April [5] => May [6] => June [7] => July [8] => August [9] => September [10] => October [11] => November [12] => December ) [abbrevmonths] => Array ( [1] => Jan [2] => Feb [3] => Mar [4] => Apr [5] => May [6] => Jun [7] => Jul [8] => Aug [9] => Sep [10] => Oct [11] => Nov [12] => Dec ) [maxdaysinmonth] => 31 [calname] => Gregorian [calsymbol] => CAL_GREGORIAN )
cal_to_jd(calendar,month,day,year)把指定的日期转换为儒略日计数
$d=cal_to_jd(CAL_GREGORIAN,3,16,2005);
echo($d);// 2455637
easter_date(year)返回指定年份的复活节午夜的 Unix 时间戳,输入一个年份,则以 UNIX 时间戳记的格式返回该年的复活节日期,若没有输入年份,则计算当年的日期
echo(easter_date());// 1303574400
echo(date("M-d-Y",easter_date()));// Apr-23-2011
echo(date("M-d-Y",easter_date(2000)));// Apr-22-2000
easter_days(year)返回指定年份的复活节与3 月 21 日之间的天数
echo(easter_days());//34
echo(easter_days(1990));// 25
frenchtojd(month,day,year)将法国共和历法转换成为儒略日计数
$d=frenchtojd(3,3,14);
echo($d);// 2380650
gregoriantojd(month,day,year)将格利高里历法转换成为儒略日计数
$jd = gregoriantojd(10,3,1975);
echo($jd . "<br />");//2442689
$gregorian = jdtogregorian($jd);
echo($gregorian);// 10/3/1975
jddayofweek(jd,mode)返回日期在周几
$jd=cal_to_jd(CAL_GREGORIAN,date("m"),date("d"),date("Y"));
echo(jddayofweek($jd,1));// Wednesday
jdmonthname(jd,mode)返回指定历法的月份字符串
mode
0 - 格里高里历 (缩写) (Jan, Feb, Mar, ...)
1 - 格里高里历 (January, February, March, ...)
2 - 凯撒历 (缩写) (Jan, Feb, Mar, ...)
3 - 凯撒历 (January, February, March, ...)
4 - 犹太历 (Tishri, Heshvan, Kislev, ...)
5 - 法国共和历 (Vendemiaire, Brumaire, Frimaire, ...)
$jd=cal_to_jd(CAL_GREGORIAN,date("m"),date("d"),date("Y"));
echo(jdmonthname($jd,1));// March
jdtofrench(jd)把儒略日计数转换为法国共和国历法
$d=jdtofrench(2380650);
echo($d);// 3/3/14
jdtogregorian(jd)把儒略日计数转换为格利高里历法
$jd = gregoriantojd(10,3,1975);
echo($jd . "<br />");//2442689
$gregorian = jdtogregorian($jd);
echo($gregorian);// 10/3/1975
JDToJewish(jd)把儒略日计数转换为犹太历法
echo(jdtojewish(gregoriantojd(10,8,2002)));// 2/2/5763
JDToJulian(jd)把儒略日计数转换为儒略历
$jd = juliantojd(10,3,1975);
echo($jd . "<br />");//2442702
$julian = jdtojulian($jd);
echo($julian);// 10/3/1975
JDToUnix(jd)把儒略日计数转换为 Unix 时间戳,如果参数 jd 不在 Unix 新纪元之中(意味着格利高里年必须介于 1970 和 2037 之间,或者 jd >= 2440588 且 jd <= 2465342),则该函数将返回 false。所返回的时间是本地时间
$jd = gregoriantojd(10,3,1970);
$unix = jdtounix($jd);
echo($unix);// 23760000
JDToUnix(jd)把犹太历法转换为儒略日计数
注释:有效的范围为犹太历法公元前 3761 年起。犹太历法存在了数千年,但早期并没有公式化的开始月份计算法。每年的第一个月为首次观测到的新月
echo(jewishtojd(2,2,5763));// 2452556
JulianToJD(jd)把儒略历转换为儒略日计数
$jd = juliantojd(10,3,1975);
echo($jd . "<br />");//2442702
$julian = jdtojulian($jd);
echo($julian);// 10/3/1975
unixtojd(timestamp)把 Unix 时间戳转换为儒略日计数
echo(unixtojd());//2455637
checkdate(month,day,year)验证一个格里高里日期
var_dump(checkdate(12,31,2000));// bool(true)
var_dump(checkdate(2,29,2003));// bool(false)
var_dump(checkdate(2,29,2004));// bool(true)
date_default_timezone_get(void)返回脚本中所有日期时间函数所使用的默认时区
echo(date_default_timezone_get());//UTC
date_default_timezone_set(timezone)设置用在脚本中所有日期/时间函数的默认时区
echo(date_default_timezone_set("Europe/Paris"));// 1
date_sunrise(timestamp,format,latitude,longitude,zenith,gmt_offset)返回指定的日期与地点的日出时间
timestamp 必需。 format 可选。规定如何返回结果:
SUNFUNCS_RET_STRING (以 string 格式返回结果,比如 16:46)
SUNFUNCS_RET_DOUBLE (以 float 格式返回结果,比如 16.78243132)
SUNFUNCS_RET_TIMESTAMP (以 integer 格式(时间戳)返回结果,比如 1095034606)latitude 可选。规定地点的纬度。默认是指北纬。因此如果要指定南纬,必须传递一个负值。 longitude 可选。规定地点的经度。默认是指东经。因此如果要指定西经,必须传递一个负值。 zenith 可选。 gmt_offset 可选。规定 GMT 与本地时间的差值。单位是小时。
//Latitude: 北纬 38.4 度
//Longitude: 西经 9 度
//Zenith ~= 90
//offset: +1 GMT
echo("Date: " . date("D M d Y") . "<br />");// Date: Wed Mar 16 2011
echo("Sunrise time: ");
echo(date_sunrise(time(),SUNFUNCS_RET_STRING,38.4,-9,90,1));//07:48
echo(date_sunset(time(),SUNFUNCS_RET_STRING,38.4,-9,90,1));//19:41函数返回指定的日期与地点的日落时间。
date(format,timestamp)格式化一个本地时间/日期
echo("Result with date():<br />");
echo(date("l") . "<br />");// Wednesday
echo(date("l dS \of F Y h:i:s A") . "<br />");// Wednesday 16th of March 2011 06:08:51 AM
echo("Oct 3,1975 was on a ".date("l", mktime(0,0,0,10,3,1975))."<br />");// Oct 3,1975 was on a Friday
echo(date(DATE_RFC822) . "<br />");// Wed, 16 Mar 11 06:09:40 +0000
echo(date(DATE_ATOM,mktime(0,0,0,10,3,1975)));// 1975-10-03T00:00:00+00:00
getdate(timestamp)取得日期/时间信息
print_r(getdate());//Array ( [seconds] => 1 [minutes] => 12 [hours] => 6 [mday] => 16 [wday] => 3 [mon] => 3 [year] => 2011 [yday] => 74 [weekday] => Wednesday [month] => March [0] => 1300255921 )
$my_t=getdate(date("U"));
print("$my_t[weekday], $my_t[month] $my_t[mday], $my_t[year]");// Wednesday, March 16, 2011
gettimeofday(return_float)返回一个包含当前时间信息的数组
返回的数组键的含义:
"sec" - 自 Unix 纪元起的秒数
"usec" - 微秒数
"minuteswest" - 格林威治向西的分钟数
"dsttime" - 夏令时修正的类型
echo(gettimeofday(true));// 1300255974.4844
print_r(gettimeofday());//Array ( [sec] => 1300255992 [usec] => 765628 [minuteswest] => 0 [dsttime] => 0 )
$my_t=gettimeofday();
print("$my_t[sec].$my_t[usec]");// 1300256004.796879
gmdate(format,timestamp)格式GMT/UTC 日期/时间,返回的时间是格林威治标准时
echo date("M d Y H:i:s", mktime (0,0,0,1,1,2000));// Jan 01 2000 00:00:00
echo gmdate("M d Y H:i:s", mktime (0,0,0,1,1,2000));// Jan 01 2000 00:00:00
echo(date("l") . "<br />");// Wednesday
echo(date("l dS \of F Y h:i:s A") . "<br />");// Wednesday 16th of March 2011 06:14:58 AM
echo("Oct 3,1975 was on a ".date("l", mktime(0,0,0,10,3,1975))."<br />");// Oct 3,1975 was on a Friday
echo(date(DATE_RFC822) . "<br />");// Wed, 16 Mar 11 06:15:32 +0000
echo(date(DATE_ATOM,mktime(0,0,0,10,3,1975)) );// 1975-10-03T00:00:00+00:00
echo(gmdate("l") . "<br />");// Wednesday
echo(gmdate("l dS \of F Y h:i:s A") . "<br />");// Wednesday 16th of March 2011 06:16:21 AM
echo("Oct 3,1975 was on a ".gmdate("l", mktime(0,0,0,10,3,1975))."<br />");// Oct 3,1975 was on a Friday
echo(gmdate(DATE_RFC822) . "<br />");// Wed, 16 Mar 11 06:16:44 +0000
echo(gmdate(DATE_ATOM,mktime(0,0,0,10,3,1975)) . "<br />");// 1975-10-03T00:00:00+00:00
gmmktime(hour,minute,second,month,day,year,is_dst)取得 GMT 日期的 UNIX 时间戳
$my_birthday = gmmktime(0,0,0,10,3,1975);
print($my_birthday . "<br />");//181526400
print(date("M-d-Y",$my_birthday));// Oct-03-1975
gmstrftime(format,timestamp)根据本地区域设置格式化 GMT/UTC 时间/日期
提示:与 strftime() 的行为相同,不同的是返回时间是格林威治标准时(GMT)
echo(strftime("%b %d %Y %X", mktime(20,0,0,12,31,98)));// Dec 31 1998 20:00:00
echo(gmstrftime("%b %d %Y %X", mktime(20,0,0,12,31,98)));// Dec 31 1998 20:00:00
//输出当前日期、时间和时区
echo(gmstrftime("It is %a on %b %d, %Y, %X time zone: %Z",time()));//It is Wed on Mar 16, 2011, 06:18:23 time zone: 中国标准时间
idate将本地时间/日期格式化为整数
B Swatch Beat/Internet Time d 月份中的第几天 h 小时(12 小时格式) H 小时(24 小时格式) i 分钟 I 如果启用夏时制则返回 1,否则返回 0 L 如果是闰年则返回 1,否则返回 0 m 月份的数字 s 秒数 t 本月的总天数 U 自 Unix 纪元(January 1 1970 00:00:00 GMT)起的秒数――这和 time() 作用相同 w 星期中的第几天(星期天是 0) W ISO-8601 格式年份中的第几个星期,每星期从星期一开始 y 年份(1 或 2 位数字――见下面说明) Y 年份(4 位数字) z 年份中的第几天 Z 以秒为单位的时区偏移量
localtime(timestamp,is_associative)返回本地时间(一个数组)
is_associative,如果设为 false 或未提供则返回的是普通的数字索引数组。如果该参数设为 true 则 localtime() 函数返回一个关联数组
关联数组中不同的键名是:
"tm_sec" - 秒数
"tm_min" - 分钟数
"tm_hour" - 小时
"tm_mday" - 月份中的第几日
"tm_mon" - 年份中的第几个月,从 0 开始表示一月
"tm_year" - 年份,从 1900 开始
"tm_wday" - 星期中的第几天
"tm_yday" - 一年中的第几天
"tm_isdst" - 夏令时当前是否生效
2011年3月16日星期三
$localtime = localtime();
$localtime_assoc = localtime(time(), true);
print_r($localtime);// Array ( [0] => 55 [1] => 20 [2] => 6 [3] => 16 [4] => 2 [5] => 111 [6] => 3 [7] => 74 [8] => 0 )
print_r($localtime_assoc);// Array ( [tm_sec] => 5 [tm_min] => 21 [tm_hour] => 6 [tm_mday] => 16 [tm_mon] => 2 [tm_year] => 111 [tm_wday] => 3 [tm_yday] => 74 [tm_isdst] => 0 )
microtime(get_as_float)返回当前 Unix 时间戳和微秒数
echo(microtime());//0.84375300 1300256510
mktime(hour,minute,second,month,day,year,is_dst)返回一个日期的 Unix 时间戳
mktime() 函数对于日期运算和验证非常有用。它可以自动校正越界的输入
echo(date("M-d-Y",mktime(0,0,0,12,36,2001)));// Jan-05-2002
echo(date("M-d-Y",mktime(0,0,0,14,1,2001)));// Feb-01-2002
echo(date("M-d-Y",mktime(0,0,0,1,1,2001)));// Jan-01-2001
echo(date("M-d-Y",mktime(0,0,0,1,1,99)));// Jan-01-1999
strftime(format,timestamp)根据区域设置格式化本地时间/日期
提示:与gmstrftime()的行为相同,不同的是返回时间是本地时间
echo(strftime("%b %d %Y %X", mktime(20,0,0,12,31,98)));// Dec 31 1998 20:00:00
echo(gmstrftime("%b %d %Y %X", mktime(20,0,0,12,31,98)));// Dec 31 1998 20:00:00
//输出当前日期、时间和时区
echo(gmstrftime("It is %a on %b %d, %Y, %X time zone: %Z",time()));//It is Wed on Mar 16, 2011, 06:24:57 time zone: 中国标准时间
strptime(date,format)解析由 strftime() 生成的日期/时间
$format="%d/%m/%Y %H:%M:%S";
$strf=strftime($format);
echo("$strf");//16/03/2011 06:25:31
print_r(strptime($strf,$format));
strtotime(time,now)将任何英文文本的日期时间描述解析为 Unix 时间戳
echo(strtotime("now"));// 1300256863
echo(strtotime("3 October 2005"));// 1128297600
echo(strtotime("+5 hours"));// 1300274889
echo(strtotime("+1 week"));// 1300861699
echo(strtotime("+1 week 3 days 7 hours 5 seconds"));// 1301146113
echo(strtotime("next Monday"));// 1300665600
echo(strtotime("last Sunday"));// 1299974400
time(void)返回当前时间的 Unix 时间戳
$t=time();
echo($t . "<br />");//1300256942
echo(date("D F d Y",$t));// Wed March 16 2011
$nextWeek = time() + (7 * 24 * 60 * 60); // 7 days; 24 hours; 60 mins; 60secs
echo 'Now: '. date('Y-m-d') ."\n";// Now: 2011-03-16
echo 'Next Week: '. date('Y-m-d', $nextWeek) ."\n";// Next Week: 2011-03-23
转载请注明:谷谷点程序 » PHP函数查询参考手册之Calendar+Date|Time篇