最新消息: 新版网站上线了!!!

PHP函数查询参考手册之Calendar+Date|Time篇

  • 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 以秒为单位的时区偏移量
    echo(idate("Y"));// 2011
     
    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篇