IntlDateFormatter::localtime

datefmt_localtime

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

IntlDateFormatter::localtime -- datefmt_localtimeTarih dizgesini alanlarına çözümler

Açıklama

Nesne yönelimli kullanım

array IntlDateFormatter::localtime ( string $dizge [, int &$başlangıç ] )

Yordamsal kullanım

array datefmt_localtime ( IntlDateFormatter $biçemleyici , string $dizge [, int &$başlangıç ] )

Belirtilen dizge'nin başlangıç konumundan itibaren olabildiğince çok veri toplayarak tarihi oluşturan alanları bir dizi içine ayrıştırır.

Değiştirgeler

biçemleyici

Biçemleyici nesnesi.

dizge

Dönüştürülecek dizge.

başlangıç

başlangıç, dizgenin başlangıcı 0 kabul edilerek bulunur. Dizgeden veri toplanırken bir hata oluşmazsa, bu değiştirgeye -1 yerleştirilir, aksi takdirde hata oluştuğu sırada okunan son konum yerleştirilir. başlangıç > strlen($dizge) ise çözümleme, anında başarısız olur.

Dönen Değerler

Yerel zamana uygun, tamsayılardan oluşan bir dizi; 'tm_hour' alanındaki saat değeri, 24 saatliktir.

Örnekler

Örnek 1 - datefmt_localtime() örneği

<?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");
echo 
"Çözümleme sonucu:\n";
if (
$arr) {
    foreach (
$arr as $key => $value) {
        echo 
"$key : $value\n";
    }
}
?>

Örnek 2 - Nesne yönelimli kullanım örneği

<?php
$fmt 
= new IntlDateFormatter("en_US"IntlDateFormatter::FULL,
        
IntlDateFormatter::FULL'America/Los_Angeles',
        
1);
$arr $fmt->localtime("Wednesday, December 31, 1969 4:00:00 PM PT");
echo 
"Çözümleme sonucu:\n";
if (
$arr) {
    foreach (
$arr as $key => $value) {
        echo 
"$key$value\n";
    }
}
?>

Yukarıdaki örneğin çıktısı:

Çözümleme sonucu:
tm_sec: 0
tm_min: 0
tm_hour: 16
tm_year: 69
tm_mday: 31
tm_wday: 3
tm_yday: 365
tm_mon: 11
tm_isdst: 0

Ayrıca Bakınız

add a note add a note

User Contributed Notes 2 notes

up
0
Patanjali
11 months 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 error
if(!$bError){
// Use 'tm_hour' and 'tm_min' from the $aTime array for checking against other time values
...
}else{
// Invalid string
...
}
?>
up
0
Patanjali
11 months 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 string
if($nPosition = -1){
// Use 'tm_hour' and 'tm_min' from the $aTime array for checking against other time values
...
}else{
// Invalid string
...
}
?>
To Top