IntlDateFormatter::localtime

datefmt_localtime

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

IntlDateFormatter::localtime -- datefmt_localtimeParse string to a field-based time value

Описание

Объектно-ориентированный стиль

public array IntlDateFormatter::localtime ( string $value [, int &$position ] )

Процедурный стиль

array datefmt_localtime ( IntlDateFormatter $fmt , string $value [, int &$position ] )

Converts string $value to a field-based time value ( an array of various fields), starting at $parse_pos and consuming as much of the input value as possible.

Список параметров

fmt

The formatter resource

value

string to convert to a time

position

Position at which to start the parsing in $value (zero-based). If no error occurs before $value is consumed, $parse_pos will contain -1 otherwise it will contain the position at which parsing ended . If $parse_pos > strlen($value), the parse fails immediately.

Возвращаемые значения

Localtime compatible array of integers : contains 24 hour clock value in tm_hour field

Примеры

Пример #1 datefmt_localtime() example

<?php

$fmt 
datefmt_create(
    
'en_US',
    
IntlDateFormatter::FULL,
    
IntlDateFormatter::FULL,
    
'America/Los_Angeles',
    
IntlDateFormatter::GREGORIAN
);
$arr datefmt_localtime($fmt'Wednesday, December 31, 1969 4:00:00 PM PT'0);
echo 
'First parsed output is ';
if (
$arr) {
    foreach (
$arr as $key => $value) {
        echo 
"$key : $value , ";
    }
}

?>

Пример #2 OO example

<?php
$fmt 
= new IntlDateFormatter(
    
'en_US',
    
IntlDateFormatter::FULL,
    
IntlDateFormatter::FULL,
    
'America/Los_Angeles',
    
IntlDateFormatter::GREGORIAN
);
$arr $fmt->localtime('Wednesday, December 31, 1969 4:00:00 PM PT'0);
echo 
'First parsed output is ';
if (
$arr) {
    foreach (
$arr as $key => $value) {
        echo 
"$key : $value , ";
    }
}

?>

Результат выполнения данного примера:

First parsed output is tm_sec : 0 , tm_min : 0 , tm_hour : 16 , tm_year : 1969 , 
tm_mday : 31 , tm_wday : 4 , tm_yday : 365 , tm_mon : 11 , tm_isdst : 0 , 

Смотрите также

Коментарии

Автор:
You can use datefmt_localtime to convert a user's time string, input using their locale's script, into standard numbers for checking, using a simple HTML input element.

This avoids using clunky HTML select elements formatted with hour and minute options in the locale's script to capture user input.

<?php
// Specify locale of user
$sLocale 'en-us'// US English user
$sLocale 'ar-ye'// Yemen Arab user

// Create a date formatter for the user's locale
$oIDF datefmt_create($sLocaleIntlDateFormatter::NONEIntlDateFormatter::SHORT);

// Simulate a user's time input string
$sTime datefmt_format($oIDF, ['tm_hour'=>15'tm_min'=>25]);
// For a US English user, $sTime = '3:25 PM'
// For a Yemen Arab user, $sTime = '٣:٢٥ م'

// Specify datefmt_locale parsing start at the beginning of the user input
$nPosition 0;

// Convert input time string to array of standard numeric values, as per localtime() output (function.localtime)
$aTime datefmt_localtime($oIDF$sTime$nPosition);
// If no errors, $nPosition set to -1 after parsing, else character position of error

// If valid string
if($nPosition = -1){
 
// Use 'tm_hour' and 'tm_min' from the $aTime array for checking against other time values
 
...
}else{
 
// Invalid string
 
...
}
?>
2017-03-04 17:55:48
http://php5.kiev.ua/manual/ru/intldateformatter.localtime.html
Автор:
Learning lesson here: Never trust the PHP documentation. Test everything!

$position does not work as described, at least in PHP 7. After parsing without errors, it does not contain -1.

You can still use it to set the parsing start character position, but not necessarily whether any errors occurred.

To test for errors, replace my $nPosition test code in the other note with:
<?php 
// Check if errors
$bError intl_is_failure(datefmt_get_error_code(oIDF));

// If no error
if(!$bError){
 
// Use 'tm_hour' and 'tm_min' from the $aTime array for checking against other time values
 
...
}else{
 
// Invalid string
 
...
}
?>
2017-03-05 01:19:12
http://php5.kiev.ua/manual/ru/intldateformatter.localtime.html

    Поддержать сайт на родительском проекте КГБ