Php/docs/datetime.construct
DateTime::__construct
date_create
(PHP 5 >= 5.2.0, PHP 7)
DateTime::__construct -- date_create — 返回一个新的 DateTime 对象
说明
面向对象风格
public DateTime::__construct
([ string $time
= "now"
[, DateTimeZone $timezone
= null
]] )
过程化风格
date_create
([ string $time
= "now"
[, DateTimeZone $timezone
= null
]] ) : DateTime
返回一个新的 DateTime 对象。
参数
time
日期/时间字符串。正确格式的说明详见 日期与时间格式。
如果这个参数为字符串
"now"
表示获取当前时间。 如果同时指定了$timezone
参数,那么获取指定时区的当前时间。timezone
DateTimeZone 对象, 表示要获取哪个时区的
$time
。如果省略了
$timezone
参数, 那么会使用当前时区。Note:
当
$time
参数是 UNIX 时间戳 (例如@946684800
), 或者已经包含时区信息 (例如2010-01-28T15:00:00+02:00
)的时候,$timezone
参数 和当前时区都将被忽略。
返回值
返回一个新的 DateTime 对象实例,或者在发生错误的时候返回
过程化风格在失败时返回 false
。。
更新日志
版本 | 说明 |
---|---|
7.1 | 微秒部分不再是 '00000' 了,而是真实的微秒数据。 |
5.3.0 | 如果 time 参数不是一个有效的
日期/时间格式, 会抛出异常。 在之前的版本中是会发出一个错误。 |
范例
Example #1 DateTime::__construct() 例程
面向对象风格
<?phptry { $date = new DateTime('2000-01-01');} catch (Exception $e) { echo $e->getMessage(); exit(1);}echo $date->format('Y-m-d');?>
过程化风格
<?php$date = date_create('2000-01-01');if (!$date) { $e = date_get_last_errors(); foreach ($e['errors'] as $error) { echo "$error\n"; } exit(1);}echo date_format($date, 'Y-m-d');?>
以上例程会输出:
2000-01-01
Example #2 DateTime::__construct() 的复杂用法
<?php// 指定时间,但是使用电脑的时区$date = new DateTime('2000-01-01');echo $date->format('Y-m-d H:i:sP') . "\n";// 指定时间和时区$date = new DateTime('2000-01-01', new DateTimeZone('Pacific/Nauru'));echo $date->format('Y-m-d H:i:sP') . "\n";// 使用当前时间以及电脑的时区$date = new DateTime();echo $date->format('Y-m-d H:i:sP') . "\n";// 使用当前时间和指定的时区$date = new DateTime(null, new DateTimeZone('Pacific/Nauru'));echo $date->format('Y-m-d H:i:sP') . "\n";// 使用 UNIX 时间戳作为时间,请注意这里的生成的 DateTime 对象对应的是 UTC 时区$date = new DateTime('@946684800');echo $date->format('Y-m-d H:i:sP') . "\n";// 指定一个无效的时间,会自动对应到有效的时间$date = new DateTime('2000-02-30');echo $date->format('Y-m-d H:i:sP') . "\n";?>
以上例程的输出类似于:
2000-01-01 00:00:00-05:00 2000-01-01 00:00:00+12:00 2010-04-24 10:24:16-04:00 2010-04-25 02:24:16+12:00 2000-01-01 00:00:00+00:00 2000-03-01 00:00:00-05:00
参见
- DateTime::createFromFormat() - 根据给定的格式解析日期时间字符串
- DateTimeZone::__construct() - 创建新的DateTimeZone对象
- 日期时间格式
- date.timezone ini 设置
- date_default_timezone_set() - 设定用于一个脚本中所有日期时间函数的默认时区
- DateTime::getLastErrors() - 获取警告和错误信息
- checkdate() - 验证一个格里高里日期