<?php
header('content-type:text/html;charset=utf-8;');
#总结php操作时间的函数
#1.cal_days_in_month(calendar,month,year):函数针对指定的年份和日历,返回一个月中的天数
#calendar:规定要使用的历法,month:规定月,year:规定年
#calendar的可选参数为:
#CAL_GREGORIAN,公历
#CAL_JULIAN,凯撒历法
#CAL_JEWISH,犹太历法
#CAL_FRENCH,法国共和历法
echo '1.cal_days_in_month(calendar,month,year):';
$d=cal_days_in_month(CAL_GREGORIAN,10,2005);
echo '<br>结果:';
echo $d;
#2.cal_from_jd(jd,calendar):函数把儒略日计数转换为指定历法的日期
$d=unixtojd(mktime(0,0,01,18,2006));
echo '<hr>2.cal_from_jd:';
echo '<br>结果:';
print_r(cal_from_jd($d,CAL_GREGORIAN));
#3.cal_info ([ int $calendar = -1 ] ):函数返回一个数组,其中包含管给定历法的信息
echo '<hr>3.cal_info():<br>结果:';
print_r(cal_info(0));//不填返回所有历法信息,参数设为0,1,2,3分别对应前面的历法
#4.cal_to_jd(calender,month,day,year):函数把指定的日期转换为儒略日期计数
echo '<hr>4.cal_to_jd:<br>';
$d=cal_to_jd(CAL_GREGORIAN,10,03,2005);
echo $d;
#5.easter_date(year):返回指定年份的复活节午夜的Unix时间戳
#如果年份在Unix时间戳范围之外(1970之前,或2037之后)。该函数会生成一个警告,可使用easter_days代替easter_date()来计算年份之外的复活节日期
echo '<hr>5.easter_date:<br>';
$d=easter_date();//year省略则代表当年
echo $d;
#6.easter_days()返回指定年份与3月21日之间的天数
echo '<hr>6.easter_days:<br>';
$d=easter_days();//year省略则代表当年
echo $d;
#7.FrenchToJD()函数将法国共和历法转换成儒略历法;
#GregorianToJD()函数将格里高利历法转换为儒略日历法
echo '<hr>7.FrenchToJD、GregorianToJD:<br>';
$jd = gregoriantojd(10,3,1975);
echo($jd . "<br />");
#8.JDDayOfWeek(jd,mode):函数返回日期在周几
#mode可选,可选值为:0默认,以整数返回周的天(0为周日....)
#1返回包含周的天的字符串。
#2.返回包含周的天的简写的字符串
echo '<hr>8.jddayofweek:<br>';
$jd=cal_to_jd(CAL_GREGORIAN,date("m"),date("d"),date("Y"));
echo(jddayofweek($jd,1));
#9.JDMonthName(jd,mode):函数返回指定历法的月份字符串
#mode可选,可选值:
#0,格里高利历(缩写)
#1.格里高利历
#2.凯撒历(缩写)
#3.凯撒历
#4.犹太历
#5.法国共和历
echo '<hr>9.JDMonthName(julianday, mode):<br>';
$jd=cal_to_jd(CAL_GREGORIAN,date('m'),date('d'),date('Y'));
echo (JDMonthName($jd,1));
// 10.JDToFrench(juliandaycount):函数把儒略日计数转换为共和国历法
// JDToGregorian(julianday):函数把儒略日计数转换为格里高利历法
// jdtojewish(juliandaycount):函数把儒略日计数转换为犹太历法
// JDToJulian(julianday):函数把儒略日计数转换为儒略历
// jdtounix(jday):函数把儒略日计数转换为Unix时间戳
echo '<hr>10.jdtounix():<br>';
$jd=gregoriantojd(10,3,1970);
$unix=jdtounix($jd);
echo $unix;
// 11.JewishToJD(month, day, year):函数把犹太历转换为儒略日计数
// JulianToJD(month, day, year):函数把儒略历转换为儒略日计数
// unixtojd(timestamp):函数把Unix时间戳转换为儒略日计数
echo '<hr>11.unixtojd(timestamp):<br>';
echo unixtojd();
// 12.checkdate(month, day, year):函数验证一个格里高利日期
// 如果指定的值合法,则该函数返回true,否则返回false
// month介于1-12
// Day的在指定的month所应该具有的天数范围之内,闰年已经考虑进去了
// year介于1到32767
echo '<hr>12.checkdate(month, day, year):<br>';
var_dump(checkdate(12,31,2000));
// 13.date_default_timezone_get(oid):函数返回脚本中所有日期时间函数所使用的默认时区。
// date_default_timezone_set(timezone_identifier):函数设置用在脚本中所有日期/时间函数的默认时区
echo '<hr>13.date_default_timezone_get(oid):<br>';
echo date_default_timezone_get();
// 14.date_sunrise(timestamp,format,latitude,longitude,zenith,gmt_offset):函数返回指定的日期与指定地点的日出时间
//date_sunset(timestamp,format,latitude,longitude,zenith,gmt_offset):函数返回指定的日期与地点的日落时间
// format:SUNFUNCS_RET_STRING,以string格式返回结果比如16:46
// SUNFUNCS_RET_DOUBLE,以float格式返回结果,比如16.78243132
// SUNFUNCS_RET_TIMESTAMP,以时间戳的形式返回结果
// latitude,规定地点的纬度,正值北纬,默认;负值,南纬
// longitude,可选,规定地点的经度。默认是指东经,如果要指定西经,需要传递一个负值
// zenith,可选
// gmt_offset,可选,规定GMT与本地时间的差值,单位是小时
echo '<hr>14.date_sunrise(timestamp,format,latitude,longitude,zenith,gmt_offset):<br>';
//echo (date_sunrise(time(),SUNFUNCS_RET_STRING,38.4,-9,90,1));
echo date_sunrise(time());
// 15.date(format,timestamp):格式化一个本地时间/日期
echo '<hr>15.date(format,timestamp):<br>';
echo date('Y-m-d H:i:s');
echo '<br>';
echo date('Y-m-d H:i:s',time());
// 16.getdate(timestamp):函数取得日期信息
// 返回结果中mday,月份中的第几天,wday,星期中的第几天
// yday,年份中的第几天,0,返回时间戳
echo '<hr>16.getdate(timestamp):<br>';
print_r(getdate());
// 17.gettimeofday():函数返回一个包含当前时间信息的数组
// 返回数组的含义:
// "sec" - 自 Unix 纪元起的秒数
// "usec" - 微秒数
// "minuteswest" - 格林威治向西的分钟数
// "dsttime" - 夏令时修正的类型
echo '<hr>17.gettimeofday():<br>';
echo(gettimeofday(true) . "<br />");
print_r(gettimeofday());
// 18.gmdate(format,timestamp):与date类似不同的是返回的是格林尼治标准时间
echo '<hr>18.gmdate(format,timestamp):<br>';
echo gmdate('Y-m-d H:i:s',time());
//19.gmmktime(hour,minute,second,month,day,year):函数获取GMT日期的Unix时间戳
// mktime((hour,minute,second,month,day,year)):函数返回一个日期的 Unix 时间戳。
// hour 可选。规定小时。
// minute 可选。规定分钟。
// second 可选。规定秒。
// month 可选。规定用数字表示的月。
// day 可选。规定天。
// year 可选。规定年。在某些系统上,合法值介于 1901 - 2038 之间。不过在 PHP 5 中已经不存在这个限制了。
echo '<hr>19.gmmktime(hour,minute,second,month,day,year):<br>';
$d = gmmktime(0,0,0,10,3,1975);
echo $d;
// 20.gmstrftime(format,timestamp):函数根据本地区域设置格式化GMT/UTC时间/日期
// strftime(format,timestamp):函数根据区域设置格式化本地时间/日期
//两个函数的行为相同,只是返回的时间不同,前者是格林尼治本地时间,后者是本地时间
echo '<hr>20.gmstrftime(format,timestamp):<br>';
echo(strftime("%b %d %Y %X", mktime(20,0,0,12,31,1998)));
echo '<br>strftime(format,timestamp):<br>';
echo(gmstrftime("%b %d %Y %X", mktime(20,0,0,12,31,98)));
// 21.idate(format,timestamp)://将本地时间/日期格式化为整数
//与date()不同,idate()只接受一个字符作为format参数
// format参数可选项为:
// 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 以秒为单位的时区偏移量
echo '<hr>21.idate(format)<br>';
echo idate('Y');
// 22.localtime(timestamp,is_associative):函数返回本地时间(一个数组)。
// 关联数组中不同的键名是:
// "tm_sec" - 秒数
// "tm_min" - 分钟数
// "tm_hour" - 小时
// "tm_mday" - 月份中的第几日
// "tm_mon" - 年份中的第几个月,从 0 开始表示一月
// "tm_year" - 年份,从 1900 开始
// "tm_wday" - 星期中的第几天
// "tm_yday" - 一年中的第几天
// "tm_isdst" - 夏令时当前是否生效
echo '<hr>22.localtime:<br>';
$localtime = localtime();
$localtime_assoc = localtime(time(), true);
print_r($localtime);
echo '<br>';
print_r($localtime_assoc);
// 23.microtime():函数返回当前Unix时间戳和微妙数
echo '<hr>23.microtime():<br>';
echo microtime();
//24.strtotimr():函数将任何英文文本的日期时间描述解析为Unix时间戳
echo '<hr>24.strtotime():<br>';
echo strtotime('now');
echo '<br>';
echo strtotime('2014/7/22');
// 25.time(oid):返回当前时间的Unix时间戳
echo '<hr>25.time():<br>';
echo time();
?>