IntlDateFormatter::localtime

datefmt_localtime

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

IntlDateFormatter::localtime -- datefmt_localtimeПреобразовывает строку в значение времени на основе поля

Описание

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

public IntlDateFormatter::localtime(string $string, int &$offset = null): array|false

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

datefmt_localtime(IntlDateFormatter $formatter, string $string, int &$offset = null): array|false

Преобразовывает строку $value в значение времени на основе полей (массив различных полей), начиная с $parse_pos и используя как можно большую часть входного значения.

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

formatter

Ресурс средства форматирования.

string

Строка для преобразования во время.

offset

Позиция, с которой следует начать синтаксический анализ в $value (начиная с нуля). Если до использования $value ошибки не возникает, $parse_pos будет содержать -1, в противном случае он будет содержать позицию, в которой закончился синтаксический анализ. Если $parse_pos > strlen($value), разбор немедленно завершается ошибкой.

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

Метод возвращает массив целых чисел, совместимый с местным временем: содержит 24-часовое значение в поле tm_hour или false, если возникла ошибка.

Примеры

Пример #1 Пример использования функции datefmt_localtime()

<?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
'Преобразованный вывод: ';
if (
$arr) {
foreach (
$arr as $key => $value) {
echo
"$key : $value , ";
}
}

?>

Пример #2 Пример использования в объектно-ориентированном стиле

<?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
'Преобразованный вывод: ';
if (
$arr) {
foreach (
$arr as $key => $value) {
echo
"$key : $value , ";
}
}

?>

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

Преобразованный вывод: 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 ,

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

  • datefmt_create() - Создаёт средство форматирования даты
  • datefmt_format() - Форматирует значение даты и времени как строку
  • datefmt_parse() - Преобразовывает строку в значение отметки времени
  • datefmt_get_error_code() - Получает код ошибки последней операции
  • datefmt_get_error_message() - Получает текст ошибки последней операции

Добавить

Примечания пользователей 2 notes

up
0
Patanjali
8 years ago
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 errorif(!$bError){ // Use 'tm_hour' and 'tm_min' from the $aTime array for checking against other time values ...}else{ // Invalid string ...}?>
up
0
Patanjali
8 years ago
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($sLocale, IntlDateFormatter::NONE, IntlDateFormatter::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 (http://php.net/manual/en/function.localtime.php)$aTime = datefmt_localtime($oIDF, $sTime, $nPosition);// If no errors, $nPosition set to -1 after parsing, else character position of error// If valid stringif($nPosition = -1){ // Use 'tm_hour' and 'tm_min' from the $aTime array for checking against other time values ...}else{ // Invalid string ...}?>
To Top