yalesov / 日期时间解析器
根据Vcard [ISO 6350] 中使用的ISO 8601日期/时间格式子集解析日期和时间。
v2.1.1
2016-07-06 12:20 UTC
Requires
- php: >=5.3.3
- yalesov/arg-validator: 2.*
Requires (Dev)
README
根据Vcard [ISO 6350] 中使用的ISO 8601日期/时间格式子集解析日期和时间。
安装
{ "require": { "yalesov/date-time-parser": "2.*" } }
使用
解析ISO-8601日期/时间
use Yalesov\DateTimeParser\Parser; $datetime = Parser::parseDateTime('19961022T140000+0800'); // $datetime['year'] = '1996'; // $datetime['month'] = '10'; // $datetime['day'] = '22'; // $datetime['hour'] = '14'; // $datetime['minute'] = '00'; // $datetime['second'] = '00'; // $datetime['timezone'] = '+0800'; $datetime = Parser::parseDateTime('---22T14'); // $datetime['year'] = null; // $datetime['month'] = null; // $datetime['day'] = '22'; // $datetime['hour'] = '14'; // $datetime['minute'] = null; // $datetime['second'] = null; // $datetime['timezone'] = null;
完整函数签名
public static function parseDateTime($datetime)
它接受一个ISO-8601日期/时间字符串并返回一个日期时间单位的数组。如果输入不是一个有效的日期/时间表达式,或者指定的日期/时间无效,它将抛出InvalidArgumentException
。
缺失的日期/时间单位将填充为null
。
独立的时间表达式必须以T
开头。
要解析ISO-8601日期表达式,使用
public static function parseDate($date)
要解析ISO-8601时间表达式,使用
public static function parseTime($time)
这两个函数的返回数组与Parser::parseDateTime()
相同。
创建ISO-8601日期/时间
use Yalesov\DateTimeParser\Parser; $expr = Parser::createDateTime('1996', '10', '22', '14', '00', '00', '+0800'); // $expr = '19961022T140000+0800'; $expr = Parser::createDateTime(null, null, '22', '14', null, null, null); // $expr = '---22T14';
这些函数是parse-()
函数的逆过程。
完整函数签名
public static function createDateTime( $year = null, $month = null, $day = null, $hour = null, $minute = null, $second = null, $timezone = null)
public static function createDate($year = null, $month = null, $day = null)
public static function createTime($hour = null, $minute = null, $second = null, $timezone = null)
有效范围
- 年:(无限)
- 月:01-12
- 日:01-31
- 时:00-23
- 分:00-59
- 秒:00-59
请注意,以0
开头的数字与以0
开头的字符串不同。例如,如果你指的是八月,写8
或'08'
,而不是08
。
从完整或部分日期/时间创建时间戳
public static function createTimestamp( $year = null, $month = null, $day = null, $hour = null, $minute = null, $second = null, $timezone = null)
接受的参数与create-()
系列相同。
Parser::createTimestamp()
如果至少提供了year
、month
和day
(且有效),将创建时间戳。如果没有提供hour
、minute
和second
,它将假设为'00'
;如果没有提供timezone
,则使用脚本时区。
如果失败则返回null
。