首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

DateTime::createFromFormat

(PHP 5 >= 5.3.0, PHP 7)

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

描述

面向对象的风格

代码语言:javascript
复制
public static DateTime DateTime::createFromFormat ( string $format , string $time [, DateTimeZone $timezone ] )

程序风格

代码语言:javascript
复制
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

面向对象的风格

代码语言:javascript
复制
<?php
$date?=?DateTime::createFromFormat('j-M-Y',?'15-Feb-2009');
echo?$date->format('Y-m-d');
?>

程序风格

代码语言:javascript
复制
<?php
$date?=?date_create_from_format('j-M-Y',?'15-Feb-2009');
echo?date_format($date,?'Y-m-d');
?>

上面的例子会输出:

代码语言:javascript
复制
2009-02-15

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

代码语言:javascript
复制
<?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";
?>

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

代码语言:javascript
复制
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使用文字字符的格式化字符串

代码语言:javascript
复制
<?php
echo?DateTime::createFromFormat('H\h?i\m?s\s','23h?15m?03s')->format('H:i:s');
?>

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

代码语言:javascript
复制
23:15:03

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com