Ben aşağıdaki tarihi dönüştürmek için strtotime kullanmaya çalışıyorum:
07/09/2009 17:01:27
Bu 7 Eylül için Avrupa / Londra timezone biçimdir
The function is inverting the month and the days, is there any workaround? thanks
Eğer strptime
instead, and explicitly set the format. As OIS points out, strptime
Windows kullanılamaz kullanabilirsiniz Windows değiliz sağlanması.
Bölmek yıl / ay / gün dönüştürmek için mktime
a> içine geçebilir Unix zaman damgası vb değerleri. Biraz keman, ama çalışıyor.
Bunu yapmak isteyebileceğiniz bir nedeni date
a> kullanarak farklı bir formatta yazdırmak olacaktır.
Strptime php.net sayfasından:
Örnek 1 strptime () örneği
<?php $format = '%d/%m/%Y %H:%M:%S'; $strf = strftime($format); echo "$strf\n"; print_r(strptime($strf, $format)); ?>
The above example will output something similar to:
03/10/2004 15:54:19
Array ( [tm_sec] => 19 [tm_min] => 54 [tm_hour] => 15 [tm_mday] => 3 [tm_mon] => 9 [tm_year] => 104 [tm_wday] => 0 [tm_yday] => 276 [unparsed] => )
/
-
değiştirme, PHP /
Amerikan biçimi olarak alır gibi görünüyor, ve -
Avrupalı gibi. Sen burada görebilirsiniz:
$date = "06/10/2011 14:28"; // 6 october 2011 2:28 pm
$otherDate = "06-10-2011 14:28"; // 6 october 2011 2:28 pm
echo $stamp = strtotime($date) . "<br />"; // outputs 1307708880
echo $otherStamp = strtotime($otherDate) . "<br />"; // outputs 1317904080
echo date("d-m", $stamp); // outputs 10-06
echo date("d-m", $otherStamp); // outputs 06-10
İşte çalışması gerektiğini hızlı bir düzeltmedir. Alternatif adlı maçları ile regex olacaktır.
function eurototime($string)
{
static $sorted = array(
'tm_hour' => null,
'tm_min' => null,
'tm_sec' => null,
'tm_mon' => null,
'tm_mday' => null,
'tm_year' => null,
);
static $unsorted = array(
'tm_mday',
'tm_mon',
'tm_year',
'tm_hour',
'tm_min',
'tm_sec',
);
static $format = '%d/%d/%d %d:%d:%d';
$parsed = sscanf($string, $format);
$data = array_combine($unsorted, $parsed);
$sortedData = array_merge($sorted, $data);
$int = call_user_func_array('mktime', $sortedData);
return $int;
}
date_default_timezone_set('Europe/London');
echo eurototime(date('d/m/Y H:i:s')), "\n", time(),"\n";
DateTime kolayca işleyebilir:
$datetime = new DateTime('07/09/2009 17:01:27', new DateTimeZone('Europe/London'));
echo $datetime->format('d/m/Y H:i:s');