(八)php参考手册---Date/Time函数

本文介绍了PHP中的Date/Time函数,包括Runtime配置、预定义的Date/Time常量和常用函数,如date()、checkdate()等。函数行为受到php.ini设置的影响,如date.timezone设定默认时区。同时,文章详细阐述了各种日期时间格式常量,如DATE_ATOM、DATE_RFC822等,并提供了相关函数的功能说明和用法示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Runtime 配置

Date/Time 函数的行为受到 php.ini 中设置的影响:
date.timezone 默认时区(所有的 Date/Time 函数使用该选项) “”
date.default_latitude 默认纬度(date_sunrise() 和 date_sunset() 使用该选项) “31.7667”
date.default_longitude 默认经度(date_sunrise() 和 date_sunset() 使用该选项) “35.2333”
date.sunrise_zenith 默认日出天顶(date_sunrise() 和 date_sunset() 使用该选项) “90.83”
date.sunset_zenith 默认日落天顶(date_sunrise() 和 date_sunset() 使用该选项) “90.83”

PHP 5 预定义的 Date/Time 常量

DATE_ATOM Atom (例如:2005-08-15T16:13:03+0000)
DATE_COOKIE HTTP Cookies (例如:Sun, 14 Aug 2005 16:13:03 UTC)
DATE_ISO8601 ISO-8601 (例如:2005-08-14T16:13:03+0000)
DATE_RFC822 RFC 822 (例如:Sun, 14 Aug 2005 16:13:03 UTC)
DATE_RFC850 RFC 850 (例如:Sunday, 14-Aug-05 16:13:03 UTC)
DATE_RFC1036 RFC 1036 (例如:Sunday, 14-Aug-05 16:13:03 UTC)
DATE_RFC1123 RFC 1123 (例如:Sun, 14 Aug 2005 16:13:03 UTC)
DATE_RFC2822 RFC 2822 (Sun, 14 Aug 2005 16:13:03 +0000)
DATE_RSS RSS (Sun, 14 Aug 2005 16:13:03 UTC)
DATE_W3C World Wide Web Consortium (例如: 2005-08-14T16:13:03+0000)

函数

  • checkdate(月,日,年) 验证格利高里日期。返回布尔型
  • date() 格式化本地日期和时间。返回字符串类型
    参数一:format 必需。规定输出日期字符串的格式。
    可使用下列字符:
    d - 一个月中的第几天(从 01 到 31)
    D - 星期几的文本表示(用三个字母表示)
    j - 一个月中的第几天,不带前导零(1 到 31)
    l(’L’ 的小写形式)- 星期几的完整的文本表示
    N - 星期几的 ISO-8601 数字格式表示(1表示Monday[星期一],7表示Sunday[星期日])
    S - 一个月中的第几天的英语序数后缀(2 个字符:st、nd、rd 或 th。与 j 搭配使用)
    w - 星期几的数字表示(0 表示 Sunday[星期日],6 表示 Saturday[星期六])
    z - 一年中的第几天(从 0 到 365)
    W - 用 ISO-8601 数字格式表示一年中的星期数字(每周从 Monday[星期一]开始)
    F - 月份的完整的文本表示(January[一月份] 到 December[十二月份])
    m - 月份的数字表示(从 01 到 12)
    M - 月份的短文本表示(用三个字母表示)
    n - 月份的数字表示,不带前导零(1 到 12)
    t - 给定月份中包含的天数
    L - 是否是闰年(如果是闰年则为 1,否则为 0)
    o - ISO-8601 标准下的年份数字
    Y - 年份的四位数表示
    y - 年份的两位数表示
    a - 小写形式表示:am 或 pm
    A - 大写形式表示:AM 或 PM
    B - Swatch Internet Time(000 到 999)
    g - 12 小时制,不带前导零(1 到 12)
    G - 24 小时制,不带前导零(0 到 23)
    h - 12 小时制,带前导零(01 到 12)
    H - 24 小时制,带前导零(00 到 23)
    i - 分,带前导零(00 到 59)
    s - 秒,带前导零(00 到 59)
    u - 微秒(PHP 5.2.2 中新增的)
    e - 时区标识符(例如:UTC、GMT、Atlantic/Azores)
    I(i 的大写形式)- 日期是否是在夏令时(如果是夏令时则为 1,否则为 0)
    O - 格林威治时间(GMT)的差值,单位是小时(实例:+0100)
    P - 格林威治时间(GMT)的差值,单位是 hours:minutes(PHP 5.1.3 中新增的)
    T - 时区的简写(实例:EST、MDT)
    Z - 以秒为单位的时区偏移量。UTC 以西时区的偏移量为负数(-43200 到 50400)
    c - ISO-8601 标准的日期(例如 2013-05-05T16:34:42+00:00)
    r - RFC 2822 格式的日期(例如 Fri, 12 Apr 2013 12:01:05 +0200)
    U - 自 Unix 纪元(January 1 1970 00:00:00 GMT)以来经过的秒数
    同时,也可使用下列预定义常量(从 PHP 5.1.0 开始可用):
    DATE_ATOM - Atom(例如:2013-04-12T15:52:01+00:00)
    DATE_COOKIE - HTTP Cookies(例如:Friday, 12-Apr-13 15:52:01 UTC)
    DATE_ISO8601 - ISO-8601(例如:2013-04-12T15:52:01+0000)
    DATE_RFC822 - RFC 822(例如:Fri, 12 Apr 13 15:52:01 +0000)
    DATE_RFC850 - RFC 850(例如:Friday, 12-Apr-13 15:52:01 UTC)
    DATE_RFC1036 - RFC 1036(例如:Fri, 12 Apr 13 15:52:01 +0000)
    DATE_RFC1123 - RFC 1123(例如:Fri, 12 Apr 2013 15:52:01 +0000)
    DATE_RFC2822 - RFC 2822(Fri, 12 Apr 2013 15:52:01 +0000)
    DATE_RFC3339 - 与 DATE_ATOM 相同(从 PHP 5.1.3 开始)
    DATE_RSS - RSS(Fri, 12 Aug 2013 15:52:01 +0000)
    DATE_W3C - 万维网联盟(例如:2013-04-12T15:52:01+00:00)
    参数二:timestamp 可选。规定整数的 Unix 时间戳。默认是当前的本地时间(time())。
    注意:可以配合使用

<?php
// 输出日
echo date("l") . "<br>";

// 输出日、日期、月、年、时间 AM 或 PM
echo date("l jS \of F Y h:i:s A");
?>
  • gettimeofday(return_float);函数返回当前时间。
    参数:return_float 可选。当设置为 TRUE 时,返回浮点数,而不是数组。默认是 FALSE。
    返回值:[sec] - Unix 纪元以来的秒(时间戳)
    [usec] - 微秒
    [minuteswest] - 格林尼治以西的分
    [dsttime] - 夏令时修正类型

  • getdate(timestamp)返回当前本地的日期/时间的日期/时间信息:
    返回值:返回带有与时间戳相关的信息的关联数组:
    [seconds] - 秒
    [minutes] - 分
    [hours] - 小时
    [mday] - 一个月中的第几天
    [wday] - 一周中的某天
    [mon] - 月
    [year] - 年
    [yday] - 一年中的某天
    [weekday] - 星期几的名称
    [month] - 月份的名称
    [0] - 自 Unix 纪元以来经过的秒数

  • time():直接获取当前时间戳

  • gmmktime(hour,minute,second,month,day,year,is_dst) 函数返回 GMT 日期的 UNIX 时间戳。
    提示:该函数与 mktime() 相同,不同的是传递的参数代表了 GMT 日期。

  • mktime(hour,minute,second,month,day,year,is_dst);函数返回日期的 UNIX 时间戳。

  • strtotime() 函数将任何英文文本的日期或时间描述解析为 Unix 时间戳(自 January 1 1970 00:00:00 GMT 起的秒数)。
    注意:如果年份表示使用两位数格式,则值 0-69 会映射为 2000-2069,值 70-100 会映射为 1970-2000。
    注意:请注意 m/d/y 或 d-m-y 格式的日期,如果分隔符是斜线(/),则使用美洲的 m/d/y 格式。如果分隔符是横杠(-)或者点(.),则使用欧洲的 d-m-y 格式。为了避免潜在的错误,您应该尽可能使用 YYYY-MM-DD 格式

  • getlastmod():获取当前文件的修改时间戳。

  • date_default_timezone_get();函数返回脚本中所有日期/时间函数使用的默认时区。
  • date_default_timezone_set(“Asia/Shanghai”);函数设置脚本中所有日期/时间函数使用的默认时区。
  • localtime(timestamp,is_assoc);函数返回本地时间。is_assoc:可选。规定返回关联数组还是索引数组。
  • microtime(get_as_float) 函数返回当前 Unix 时间戳的微秒数。get_as_float:可选,返回的是是浮点数还是字符串。

  • date_interval_create_from_date_string() 从字符串的相关部分建立 DateInterval。

  • date_add(object,interval) 函数向某个日期添加日、月、年、时、分和秒。
    参数:
    object 必需。规定 date_create() 返回的 DateTime 对象。
    interval 必需。规定 DateInterval 对象。

  • date_create_from_format(format,time,timezone) 返回根据指定格式进行格式化的新的 DateTime 对象。

  • date_create(time,timezone); 函数返回新的 DateTime 对象。
  • date_date_set(object,year,month,day) 函数设置新的日期。
    参数:object 必需。规定由 date_create() 返回的 DateTime 对象。
    year 必需。规定日期中的年。
    month 必需。规定日期中的月。
    day 必需。规定日期中的日。

  • date_diff(datetime1,datetime2,absolute);函数返回两个 DateTime 对象间的差值。
    参数:datetime1 必需。规定 DateTime 对象。
    datetime2 必需。规定 DateTime 对象。
    absolute 可选。规定布尔值。TRUE 表示间隔/差值必须是正的。默认是 FALSE。

  • date_format(object,format) 函数返回根据指定格式进行格式化的日期。
    参数:object 必需。规定由 date_create() 返回的 DateTime 对象。
    format 必需。规定日期的格式。

  • date_get_last_errors() 函数返回解析日期字符串时找到的警告/错误。

  • date_interval_format(format) 函数是 DateInterval::format() 的别名。用于格式化时间间隔。
  • date_isodate_set(object,year,week,day);函数根据 ISO 8601 标准设置日期,使用周和天的偏移量(而不是使用一个具体的日期)。
  • date_modify(object,modify) 函数修改时间戳。
<?php
$date=date_create("2016-09-25");
date_modify($date,"+4 days");
echo date_format($date,"Y-m-d");
?>
  • date_offset_get(object) 函数返回时区偏移。
    参数:object 必需。规定由 date_create() 返回的 DateTime 对象。

  • date_parse_from_format(format,date) 函数根据指定的格式返回包含指定日期信息的关联数组。
    format 必需。规定格式(date_create_from_format() 接受的格式)。
    date 必需。指定日期,字符串值。

  • date_parse(date) 返回带有关于指定日期的详细信息的关联数组。
    参数:date 必需。规定日期(strtotime() 接受的格式)。

  • date_sub(object,interval) 从指定日期减去日、月、年、时、分和秒。
    参数:object 必需。规定由 date_create() 返回的 DateTime 对象。
    interval 必需。规定 DateInterval 对象。

<?php
$date=date_create("2016-09-29");
date_sub($date,date_interval_create_from_date_string("4 days"));
echo date_format($date,"Y-m-d");
?>
  • date_sun_info(timestamp,latitude,longitude) 返回包含有关指定日期与地点的日出/日落和黄昏开始/黄昏结束的信息的数组。
    参数:timestamp 必需。规定时间戳。
    latitude 必需。必需。规定纬度,以度数计。
    longitude 必需。必需。规定经度,以度数计。

  • date_sunrise(timestamp,format,latitude,longitude,zenith,gmtoffset) 返回指定日期与位置的日出时间。
    参数:
    timestamp 必需。规定要计算日出时间的日期时间戳。
    format 可选。规定如何返回结果:
    SUNFUNCS_RET_STRING(以字符串返回结果,比如 16:46)(默认)
    SUNFUNCS_RET_DOUBLE(以浮点数返回结果,比如 16.78243132)
    SUNFUNCS_RET_TIMESTAMP(以整数(时间戳)返回结果,比如 1095034606)
    latitude 可选。规定地点的纬度。默认是指北纬。如需指定南纬,请传递负值。
    longitude 可选。规定地点的经度。默认是指东经。如需指定西经,请传递负值。
    zenith 可选。默认为 date.sunrise_zenith。
    gmtoffset 可选。规定 GMT 与本地时间的差值,以小时计。

  • date_sunset() 返回指定日期与位置的日落时间。(同上)

  • date_time_set(object,hour,minute,second) 设置时间。
    参数:object 必需。规定由 date_create() 返回的 DateTime 对象。
    hour 必需。规定时间中的小时。
    minute 必需。规定时间中的分。
    second 可选。规定时间中的秒。默认为 0。

  • date_timestamp_get(object) 返回 Unix 时间戳。
    参数:object 必需。规定由 date_create() 返回的 DateTime 对象。

  • date_timestamp_set(object,unixtimestamp) 设置基于 Unix 时间戳的日期和时间。
    参数:object 必需。规定由 date_create() 返回的 DateTime 对象。本函数修改该对象。
    unixtimestamp 必需。规定代表日期的 Unix 时间戳。

  • date_timezone_get(object) 返回给定 DateTime 对象的时区。
    参数:object 必需。规定由 date_create() 返回的 DateTime 对象。

  • date_timezone_set(object,timezone) 设置 DateTime 对象的时区。
    参数:object 必需。规定由 date_create() 返回的 DateTime 对象。本函数修改该对象。
    timezone
    必需。规定代表所需时区的 DateTimeZone 对象。

  • getdate(timestamp) 返回某个时间戳或者当前本地的日期/时间的日期/时间信息。

  • gmdate(format,timestamp)格式化 GMT/UTC 日期和时间。

  • gmmktime(hour,minute,second,month,day,year,is_dst); 返回 GMT 日期的 UNIX 时间戳。

  • gmstrftime(format,timestamp) 根据区域设置对 GMT/UTC 日期和时间进行格式化。

  • idate(format,timestamp) 将本地时间/日期格式化为整数。
    参数: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 - 以秒为单位的时区偏移量
    timestamp 可选。规定代表需要格式化的日期/时间的 Unix 时间戳。默认为当前本地时间(time())。

  • localtime((timestamp,is_assoc) 返回本地时间。

  • strftime(format,timestamp) 根据区域设置对本地时间/日期进行格式化。
    参数:format 必需。规定如何返回结果:
    %a - 星期几名称的简写
    %A - 星期几名称的全称
    %b - 月份名称的简写
    %B - 月份名称的全称
    %c - 首选的日期和时间表示法
    %C - 表示世纪的数字(年份除以 100,范围从 00 到 99)
    %d - 一个月中的第几天(01 到 31)
    %D - 时间格式,与 %m/%d/%y 表示法相同
    %e - 一个月中的第几天(1 到 31)
    %g - 与 %G 表示法类似,但不带世纪
    %G - 与 ISO 星期数对应的 4 位数年份(见 %V)
    %h - 与 %b 表示法相同
    %H - 小时,使用 24 小时制(00 到 23)
    %I - 小时,使用 12 小时制(01 到 12)
    %j - 一年中的第几天(001 到 366)
    %m - 月份(01 到 12)
    %M - 分
    %n - 换行符
    %p - 与给定的时间值相对应的 am 或 pm
    %r - a.m. 和 p.m. 的时间标记法
    %R - 24 小时制的时间标记法
    %S - 秒
    %t - tab 制表符
    %T - 当前时间,与 %H:%M:%S 表示法相同
    %u - 星期几的数字表示(1 到 7),Monday[星期一] = 1。警告:在 Sun Solaris 系统中,Sunday[星期日] = 1
    %U - 当年包含的周数,从第一个星期日开始,作为第一周的第一天
    %V - 当年包含的 ISO 8601 格式下的周数(01 到 53),week 1 表示当年的第一周,至少要有四天,且以星期一作为周的第一天
    %W - 当年包含的周数,从第一个星期一开始,作为第一周的第一天
    %w - 以十进制数形式表示一周中的某天,Sunday[星期日] = 0
    %x - 首选的日期表示法,不带时间
    %X - 首选的时间表示法,不带日期
    %y - 不包含表示世纪的数字的年份表示(范围从 00 到 99)
    %Y - 包含表示世纪的数字的年份表示
    %Z 或 %z - 时区名称或简写
    %% - 输出一个 % 字符

  • strptime(date,format) 解析由 strftime() 生成的时间/日期。
    参数:date 必需。要解析的字符串(例如:由 strftime() 返回的)。
    format:同上

  • timezone_abbreviations_list() 返回包含夏令时、偏移量和时区名称的关联数组。(没有参数)

  • timezone_identifiers_list(what,country) 返回带有所有时区标识符的索引数组。
    参数:what
    可选。规定 DateTimeZone 类常量
    1 = AFRICA
    2 = AMERICA
    4 = ANTARCTICA
    8 = ARCTIC
    16 = ASIA
    32 = ATLANTIC
    64 = AUSTRALIA
    128 = EUROPE
    256 = INDIAN
    512 = PACIFIC
    1024 = UTC
    2047 = ALL
    4095 = ALL_WITH_BC
    4096 = PER_COUNTRY
    country 可选。规定两个字母的 ISO 3166-1 兼容的国家代码。

  • timezone_location_get(object ) 返回指定时区的位置信息。
    参数:object 必需。规定由 timezone_open() 返回的 DateTimeZone 对象。

  • timezone_name_from_abbr(abbr,gmtoffset,isdst) 根据时区缩略语返回时区名称。
    参数:abbr 必需。规定时区缩略语。
    gmtoffset 可选。规定相对于 GMT 的以秒为单位的偏移量。
    默认为 -1,表示返回第一个被找到的匹配缩略语的时区。否则搜索精确的偏移量。
    如果没有找到,则返回任意偏移量的第一个时区。
    isdst
    可选。规定夏令时指示器。
    -1 = 默认。搜索时是否考虑时区的夏令时
    1 = 表示 gmtoffset 是受夏令时影响的一个偏移量
    0 = 表示 gmtoffset 是不受夏令时影响的一个偏移量

  • timezone_name_get(object) 返回时区的名称。
    参数:object 必需。规定 DateTimeZone 对象。

  • timezone_offset_get(object,datetime) 返回相对于 GMT 的时区偏移。
    参数:object 必需。规定由 timezone_open() 返回的 DateTimeZone 对象。
    datetime 必需。规定需要计算偏移的日期/时间。

  • timezone_open(timezone) 创建新的 DateTimeZone 对象。

  • timezone_transitions_get() 返回时区的所有转换。

  • timezone_version_get() 返回时区数据库的版本。(没有参数)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值