heartsentwined / date-time-parser
Parse date and time according to the subset of ISO 8601 date/time format used in Vcard [ISO 6350].
Installs: 1 035
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 1
Forks: 1
pkg:composer/heartsentwined/date-time-parser
Requires
- php: >=5.3.3
- yalesov/arg-validator: 2.*
Requires (Dev)
README
Parse date and time according to the subset of ISO 8601 date/time format used in Vcard [ISO 6350].
Installation
{
"require": {
"yalesov/date-time-parser": "2.*"
}
}
Usage
Parse an ISO-8601 date/time
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;
Full function signature:
public static function parseDateTime($datetime)
It accepts an ISO-8601 date-and-or-time string and returns an array of datetime units. It will throw an InvalidArgumentException if the input is not a valid date/time expression, or if the date/time specified is invalid.
Missing date/time units will be filled with null.
Standalone time expressions must be prefixed with T.
To parse an ISO-8601 date expression, use:
public static function parseDate($date)
To parse an ISO-8601 time expression, use:
public static function parseTime($time)
The return array for these two functions are same as Parser::parseDateTime().
Create an ISO-8601 date/time
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';
These are simply reverses of the parse-() functions.
Full function signatures:
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)
Valid ranges:
- Year: (unlimited)
- Month: 01-12
- Day: 01-31
- Hour: 00-23
- Minute: 00-59
- Second: 00-59
Note that 0-prefixed numbers are different from 0-prefixed strings. For example, if you mean August, write 8 or '08', not 08.
Create a timestamp from a complete or partial date/time
public static function createTimestamp( $year = null, $month = null, $day = null, $hour = null, $minute = null, $second = null, $timezone = null)
Accepted arguments are same as the create-() series.
Parser::createTimestamp() will create a timestamp if at least year, month, day are given (and valid). It will assume '00' for hour, minute and second if not given; and script timezone if timezone is not given.
Return null if failed to create a timestamp.