日历和事件相关扩展 - Datetime
介绍
这些函数允许你从运行 PHP 的服务器获取时间和日期,你可以通过各种方式来处理这些日期.日期和时间信息在内部以 64 为数字存储,所以可以想到的任何时间的日期都是支持的(包括公元前纪年), 所有的时间都是基于内部的服务器设置.
安装
这些函数在 PHP5.2.0 中被支持.这也可以在 PHP5.1.X 中被支持,所以暂时不讨论,这些都是高级的东西,不讨论支持的方法,只是讨论高级的功能
配置
date.default_latitude “31.7667” PHP_INI_ALL 默认纬度
date.default_longitude “35.2333” PHP_INI_ALL 默认经度
date.sunrise_zenith “90.83” PHP_INI_ALL 默认日出天顶
date.sunset_zenith “90.83” PHP_INI_ALL 默认日落天顶
date.timezone "" PHP_INI_ALL 默认的时区
前四个配置选项目前仅用于 date_sunrise() 和 date_sunset()
函数
- DateTime
从服务器获取时间或者使用函数来格式化时间 由于数据是以 64 位数字保存,所以数据可以延伸到负数的年份,所以时间可以延伸到 -2920 亿年前到 2920 亿年之前
DateTime {
/* 常量 */
const string ATOM = "Y-m-d\TH:i:sP" ;
const string COOKIE = "l, d-M-y H:i:s T" ;
const string ISO8601 = "Y-m-d\TH:i:sO" ;
const string RFC822 = "D, d M y H:i:s O" ;
const string RFC850 = "l, d-M-y H:i:s T" ;
const string RFC1036 = "D, d M y H:i:s O" ;
const string RFC1123 = "D, d M Y H:i:s O" ;
const string RFC2822 = "D, d M Y H:i:s O" ;
const string RFC3339 = "Y-m-d\TH:i:sP" ;
const string RSS = "D, d M Y H:i:s O" ;
const string W3C = "Y-m-d\TH:i:sP" ;
/* 方法 */
public __construct ([ string $time = "now" [, DateTimeZone $timezone = NULL ]] )
DateTime date_create ([ string $time = "now" [, DateTimeZone $timezone = NULL ]] )
建立DateTime对象
$time 指定的时间, 支持的格式:支持的时间和日期格式
$timezone DateTimeZone对象.
public DateTime add ( DateInterval $interval )
DateTime date_add ( DateTime $object , DateInterval $interval )
[5.3.0]添加一定数量的时间间隔, DateInterval 对象
添加一定的年份,月份,天数,小时,分钟数,秒数到 DateTime 对象
$interval
DateInterval对象
public static DateTime createFromFormat ( string $format , string $time [, DateTimeZone $timezone ] )
DateTime date_create_from_format ( string $format , string $time [, DateTimeZone $timezone ] )
[5.3.0]返回一个根据指定格式格式化的对象
$format date可以指定的格式 PHP格式化时间支持的字串
$time 根据格式指定的时间
public DateInterval diff ( DateTime $datetime2 [, bool $absolute = false ] )
DateInterval date_diff ( DateTime $datetime1 , DateTime $datetime2 [, bool $absolute = false ] )
[5.3.0]返回两个datetime对象之间的时间差, 返回一个DateInterval对象
$datetime2 datetime对象
public string format ( string $format )
string date_format ( DateTime $object , string $format )
根据指定的格式返回格式化的字串
$format 可以指定的格式 PHP格式化时间支持的字串
public static array getLastErrors ( void )
array date_get_last_errors ( void )
[5.3.0]返回分析字串时候的最后一个错误记录
public int getOffset ( void )
int date_offset_get ( DateTime $object )
返回时区偏移
public int getTimestamp ( void )
int date_timestamp_get ( DateTime $object )
[5.3.0]获取unix时间戳
public DateTimeZone getTimezone ( void )
DateTimeZone date_timezone_get ( DateTime $object )
获取timezone对象
public DateTime modify ( string $modify )
DateTime date_modify ( DateTime $object , string $modify )
修改dateTime对象
$modify 修改对象所根据的字串 PHP时间支持的时间和日期格式
public static DateTime __set_state ( array $array )
var_dump 调用的 __set_state对象
public DateTime setDate ( int $year , int $month , int $day )
DateTime date_date_set ( DateTime $object , int $year , int $month , int $day )
根据指定的日期重置当前对象
public DateTime setISODate ( int $year , int $week [, int $day = 1 ] )
DateTime date_isodate_set ( DateTime $object , int $year , int $week [, int $day = 1 ] )
根据ISO 8601 标准这只 date对象
$year 指定的年份
$week 指定的周
$day 指定的一周的第几天
public DateTime setTime ( int $hour , int $minute [, int $second = 0 ] )
DateTime date_time_set ( DateTime $object , int $hour , int $minute [, int $second = 0 ] )
设置时间
public DateTime setTimestamp ( int $unixtimestamp )
DateTime date_timestamp_set ( DateTime $object , int $unixtimestamp )
[5.3.0]基于unix时间戳来重置对象
public DateTime setTimezone ( DateTimeZone $timezone )
DateTime date_timezone_set ( DateTime $object , DateTimeZone $timezone )
设置时区
$timezone dateTimeZone对象
public DateTime sub ( DateInterval $interval )
DateTime date_sub ( DateTime $object , DateInterval $interval )
[5.3.0]减少指定的时间, 月份,小时,通过 dateInterval对象
$interval dateInterval对象
public DateTime __wakeup ( void )
}
- DateTimeZone
时区对象
DateTimeZone {
/* 常量 */
const integer AFRICA = 1 ;
const integer AMERICA = 2 ;
const integer ANTARCTICA = 4 ;
南极洲
const integer ARCTIC = 8 ;
北极
const integer ASIA = 16 ;
const integer ATLANTIC = 32 ;
大西洋
const integer AUSTRALIA = 64 ;
const integer EUROPE = 128 ;
const integer INDIAN = 256 ;
const integer PACIFIC = 512 ;
太平洋
const integer UTC = 1024 ;
const integer ALL = 2047 ;
const integer ALL_WITH_BC = 4095 ;
const integer PER_COUNTRY = 4096 ;
/* 方法 */
public __construct ( string $timezone )
DateTimeZone timezone_open ( string $timezone )
建立一个Datetimezone对象
$timezone php支持的timezone列表 PHP 支持的时区列表
public array getLocation ( void )
array timezone_location_get ( DateTimeZone $object )
[5.3.0]从时区对象获取时区信息
country_code 国别代码
latitude 纬度
longitude 经度
comments 备注信息
public string getName ( void )
string timezone_name_get ( DateTimeZone $object )
获取时区的名称
public int getOffset ( DateTime $datetime )
int timezone_offset_get ( DateTimeZone $object , DateTime $datetime )
获取相对于GMT的时间差
public array getTransitions ([ int $timestamp_begin [, int $timestamp_end ]] )
array timezone_transitions_get ( DateTimeZone $object [, int $timestamp_begin [, int $timestamp_end ]] )
获取所有时区的转变
public static array listAbbreviations ( void )
array timezone_abbreviations_list ( void )
返回包含dst, offset, timezonename 的缩写
public static array listIdentifiers ([ int $what = DateTimeZone::ALL [, string $country = NULL ]] )
array timezone_identifiers_list ([ int $what = DateTimeZone::ALL [, string $country = NULL ]] )
列出所有的时区
$what
本类中定义的常量
$country
ISO 3166-1中指定的国别代码
}
- DateInterval [5.3.0] 日期间隔的表示法
DateInterval {
/* 属性 */
public integer $y ;
public integer $m ;
public integer $d ;
public integer $h ;
public integer $i ;
public integer $s ;
public integer $invert ;
public mixed $days ;
/* 方法 */
public __construct ( string $interval_spec )
建立一个新的 DateInterval对象
$interval_spec
指定的规格, 这个格式开始于字符 "P" , 每一个区域是一个 integer 数值, 然后跟着一个designator, 如果区域包含时间元素, 指定的时间开始于T字符
Y years
M months
D days
W weeks.不要和D一起使用
H hours
M minutes
S seconds
public static DateInterval createFromDateString ( string $time )
[alias] date_interval_create_from_date_string()
通过相对的时间部分建立一个DateInteval对象
$time 相对时间部分
public string format ( string $format )
[alias]date_interval_format()
格式化当前的 interval对象
$format 每一个参数都使用%前缀
% %
Y/y 至少两位年份
M/m 月份/没有前缀
D/d 日子/无前缀
a 日期总数
H/h 小时/无前缀
I/i 分钟/无前缀
S/s 秒钟/无前缀
R 符号, - 表示 负的, + 表示正数
r 符号, - 表示负的, 空表示正数
}
- DatePeriod
DatePeriod implements Traversable {
/* 常量 */
const integer EXCLUDE_START_DATE = 1 ;
/* 方法 */
public__construct ( DateTime $start , DateInterval $interval , int $recurrences [, int $options ] )
public__construct ( DateTime $start , DateInterval $interval , DateTime $end [, int $options ] )
public__construct ( string $isostr [, int $options ] )
建立datePeriod 对象
$start 开始日期
$interval DateInterval对象
$recurrences 反复次数
$end 结束日期
$isostr 包含ISO间隔的时间
$options 选项:可以设置成的常量
}
Sample:
bool checkdate ( int $month , int $day , int $year )
验证一个格里高日期
$month [1-12]
$day 在指定的天数范围内
$year [132767]
string date_default_timezone_get ( void )
以字串形式返回当前的默认时区设置 检测顺序:
- 用 date_default_timezone_set()函数设定的时区(如果设定了的话)
- TZ 环境变量(如果非空) [5.4 删除]
- date.timezone 配置选项(如果设定了的话)
- 自己推测(如果操作系统支持) [5.4 删除]
- 如果以上选择都不成功,则返回 UTC
bool date_default_timezone_set ( string $timezone_identifier )
设定用于一个脚本中所有日期时间函数的默认时区
$timezone_identfier
PHP 支持的时区列表
array date_parse_from_format ( string $format , string $date )
返回给定日期的详细信息
$format 格式
$date 日期
array date_parse ( string $date )
返回给定详细信息的关联数组
array date_sun_info ( int $time , float $latitude , float $longitude )
返回指定经纬度的日出日落时间和黄昏开始结束时间.
$time unix时间戳
$latitude 纬度
$longitude 经度
mixed date_sunrise ( int $timestamp [, int $format [, float $latitude [, float $longitude [, float $zenith [, float $gmt_offset ]]]]] )
返回给定的日期和地点的日出时间
$timestamp unix时间戳
$format
SUNFUNCS_RET_STRING 字串形式
SUNFUNCS_RET_DOUBLE 浮点数形式
SUNFUNCS_RET_TIMESTAMP unix时间戳形式
$latitude 北纬
$longitude 东经
$zenith 日中时间
$gmtoffset gmt偏移,指定的偏移小时时间
mixed date_sunset ( int $timestamp [, int $format [, float $latitude [, float $longitude [, float $zenith [, float $gmt_offset ]]]]] )
指定日期和地点的日落时间, 参数同上
string date ( string $format [, int $timestamp ] )
格式化一个本地时间
$format PHP格式化时间支持的字串
$timestamp 默认是现在时间
array getdate ([ int $timestamp ] )
根据 timestamp 去掉包含有日期信息的结合数组
[seconds] => 40 秒
[minutes] => 58 分
[hours] => 21 小时
[mday] => 17 在月份中的第几天
[wday] => 2 一周中的第几天
[mon] => 6 月份
[year] => 2003 年份
[yday] => 167 一年中的第几天
[weekday] => Tuesday 星期几的完整表示
[month] => June 月份的完整表示
[0] => 1055901520 unix时间戳
mixed gettimeofday ([ bool $return_float ] )
取得当前时间
[sec] => 1073504408 秒
[usec] => 238215 微秒
[minuteswest] => 0 格林威治向西的分钟数
[dsttime] => 1 夏时令校正的类型
string gmdate ( string $format [, int $timestamp ] )
格式化一个 GMT 日期/时间
int gmmktime ([ int $hour [, int $minute [, int $second [, int $month [, int $day [, int $year [, int $is_dst ]]]]]]] )
返回 gmt 时间戳
string gmstrftime ( string $format [, int $timestamp ] )
格式化时间
int idate ( string $format [, int $timestamp ] )
将本地世家日期格式化为整数
$format 只接受一个字符作为format参数.
array localtime ([ int $timestamp [, bool $is_associative ]] )
取得本地时间
$timestamp 默认是 time()
$is_associative 是否关联数组
[tm_sec] => 24
[tm_min] => 3
[tm_hour] => 19
[tm_mday] => 3
[tm_mon] => 3
[tm_year] => 105
[tm_wday] => 0
[tm_yday] => 92
[tm_isdst] => 1
mixed microtime ([ bool $get_as_float ] )
返回 unix 时间戳和微秒数
int mktime ([ int $hour [, int $minute [, int $second [, int $month [, int $day [, int $year [, int $is_dst ]]]]]]] )
取得一个日期的 unix 时间戳
string strftime ( string $format [, int $timestamp ] )
根据区域设置格式化本地时间/日期
$format
%a - 当前区域星期几的简写
%A - 当前区域星期几的全称
%b - 当前区域月份的简写
%B - 当前区域月份的全称
%c - 当前区域首选的日期时间表达
%C - 世纪值(年份除以 100 后取整,范围从 00 到 99)
%d - 月份中的第几天,十进制数字(范围从 01 到 31)
%D - 和 %m/%d/%y 一样
%e - 月份中的第几天,十进制数字,一位的数字前会加上一个空格(范围从 ' 1' 到 '31')
%g - 和 %G 一样,但是没有世纪
%G - 4 位数的年份,符合 ISO 星期数(参见 %V)。和 %V 的格式和值一样,只除了如果 ISO 星期数属于前一年或者后一年,则使用那一年。
%h - 和 %b 一样
%H - 24 小时制的十进制小时数(范围从 00 到 23)
%I - 12 小时制的十进制小时数(范围从 00 到 12)
%j - 年份中的第几天,十进制数(范围从 001 到 366)
%m - 十进制月份(范围从 01 到 12)
%M - 十进制分钟数
%n - 换行符
%p - 根据给定的时间值为 `am' 或 `pm',或者当前区域设置中的相应字符串
%r - 用 a.m. 和 p.m. 符号的时间
%R - 24 小时符号的时间
%S - 十进制秒数
%t - 制表符
%T - 当前时间,和 %H:%M:%S 一样
%u - 星期几的十进制数表达 [1,7],1 表示星期一
array strptime ( string $date , string $format )
解析由 strftime 商城的时间/日期
[tm_sec] => 24
[tm_min] => 3
[tm_hour] => 19
[tm_mday] => 3
[tm_mon] => 3
[tm_year] => 105
[tm_wday] => 0
[tm_yday] => 92
[tm_isdst] => 1
int strtotime ( string $time [, int $now ] )
将任何英文的文本的日期解析为 unix 时间戳
int time ( void )
返回 unix 时间戳
string timezone_name_from_abbr ( string $abbr [, int $gmtOffset = -1 [, int $isdst = -1 ]] )
从缩写返回时区的完整名称
$abbr 缩写
$gmtOffset 偏移秒数
$isdst 夏时令
string timezone_version_get ( void )
获取 timezone 数据库的版本号
扩展
说明
创建时间: 2023-01-15 09:27:00 , 最后编辑于 2023-11-24 13:58:00