PHP
日期和时间 | Date and Time

DateTime::createFromFormat

DateTime::createFromFormat

date_create_from_format

(PHP 5 >= 5.3.0, PHP 7)

DateTime :: createFromFormat - date_create_from_format - 根据指定的格式分析时间字符串

描述

面向对象的风格

public static DateTime DateTime::createFromFormat ( string $format , string $time [, DateTimeZone $timezone ] )

程序风格

DateTime date_create_from_format ( string $format , string $time [, DateTimeZone $timezone ] )

返回一个新的DateTime对象,该对象表示由time给定格式的字符串指定的日期和时间format

参数

format

传入的字符串格式应该在。请参阅下面的格式选项。在大多数情况下,可以使用与date()相同的字母。

格式字符描述示例可分析值
Day
d and j 月份的日期,2位数字有或没有前导零01至31或1至31
D and l 一天的文字表示周一至周日或周日至周六
S 本月的英文序号后缀,2个字符。处理时忽略它。st,nd,rd或th。
z 一年中的某一天(从0开始)0到365
Month
F and M 一个月的文字表示,例如1月或9月1月至12月或1月至12月
m and n 一个月的数字表示,带或不带前导零01至12或1至12
Year
Y 一年的完整数字表示,4位数字例如:1999年或2003年
y 一年的两位数字表示(假定为1970-2069,包括在内)例如:99或03(将分别解释为1999和2003)
Time
a and A 中午中午前后上午或下午
g and h 一小时的12小时格式,带或不带前导零1至12或01至12
G and H 一小时24小时格式,带或不带前导零0至23或00至23
i 与前导零分钟00至59
s 秒,前导零00至59
u 微秒(最多六位数字)例如:45,654321
Timezone
e, O, P and T 时区标识符,或与UTC之间的差异(以小时为单位),或与UTC之间的差异(小时和分钟之间的冒号)或时区缩写例如:UTC,GMT,大西洋/亚速尔群岛或+0200或+02:00或EST,MDT
Full Date/Time
U 自Unix时代开始秒(1970年1月1日00:00:00 GMT)例如:1292177455
空白和分隔符
(空间)一个空格或一个选项卡例:
以下分隔符号之一:;,:,/,。,,, - ,(或)示例:/
;, :, /, ., ,, -, ( or ) 指定的字符。例如: -
?一个随机字节例如:^(请注意,对于UTF-8字符,您可能需要多个?在这种情况下,使用*可能是您想要的)
*随机字节,直到下一个分隔符或数字例如:*在Y - * - d中字符串2009-aWord-08将匹配aWord
!将所有字段(年,月,日,小时,分钟,秒,分数和时区信息)重置到Unix Epoch没有!,所有字段将被设置为当前的日期和时间。
|如果尚未分析,则将所有字段(年,月,日,小时,分钟,秒,分数和时区信息)重置为Unix时期YMD | 会将年,月和日设置为要解析的字符串中的信息,并将小时,分钟和秒设置为0。
+如果此格式说明符存在,则字符串中的数据尾随不会导致错误,而是会出现警告使用DateTime :: getLastErrors()来确定尾随数据是否存在。

格式字符串中无法识别的字符将导致解析失败,并将错误消息追加到返回的结构中。您可以使用DateTime :: getLastErrors()查询错误消息。

要包含文字字符format,您必须用反斜杠(__)将它们转义。

如果format不包含角色那么未被指定的部分生成时间format将被设置为当前系统时间。

如果format包含角色,那么生成的部分时间没有提供format,以及值的左侧,将被设置为Unix时代的相应值。

Unix纪元是1970-01-01 00:00:00 UTC。

time

代表时间的字符串。

timezone

代表所需时区的DateTimeZone对象。

如果timezone省略并且不time包含时区,则将使用当前时区。

注意timezonetime参数包含UNIX时间戳(例如946684800)或指定时区(例如2010-01-28T15:00:00 + 02:00)时,参数和当前时区将被忽略。

返回值

返回新的DateTime实例或FALSE失败。

更新日志

描述
5.3.9+格式说明符已被添加。

例子

示例 #1 DateTime::createFromFormat() example

面向对象的风格

<?php $date = DateTime::createFromFormat('j-M-Y', '15-Feb-2009' echo $date->format('Y-m-d' ?>

程序风格

<?php $date = date_create_from_format('j-M-Y', '15-Feb-2009' echo date_format($date, 'Y-m-d' ?>

上面的例子会输出:

2009-02-15

示例 #2 Intricacies of DateTime::createFromFormat()

<?php echo 'Current time: ' . date('Y-m-d H:i:s') . "\n"; $format = 'Y-m-d'; $date = DateTime::createFromFormat($format, '2009-02-15' echo "Format: $format; " . $date->format('Y-m-d H:i:s') . "\n"; $format = 'Y-m-d H:i:s'; $date = DateTime::createFromFormat($format, '2009-02-15 15:16:17' echo "Format: $format; " . $date->format('Y-m-d H:i:s') . "\n"; $format = 'Y-m-!d H:i:s'; $date = DateTime::createFromFormat($format, '2009-02-15 15:16:17' echo "Format: $format; " . $date->format('Y-m-d H:i:s') . "\n"; $format = '!d'; $date = DateTime::createFromFormat($format, '15' echo "Format: $format; " . $date->format('Y-m-d H:i:s') . "\n"; ?>

上面的例子会输出类似于:

Current time: 2010-04-23 10:29:35 Format: Y-m-d; 2009-02-15 10:29:35 Format: Y-m-d H:i:s; 2009-02-15 15:16:17 Format: Y-m-!d H:i:s; 1970-01-15 15:16:17 Format: !d; 1970-01-15 00:00:00

示例#3使用文字字符的格式化字符串

<?php echo DateTime::createFromFormat('H\h i\m s\s','23h 15m 03s')->format('H:i:s' ?>

上面的例子会输出类似于:

23:15:03