Avrupa tarih formatı ile strtotime

5 Cevap php

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

5 Cevap

deneyin:

strtotime(07/09/2009 17:01:27 GMT);

veya birinci belki bu deneyin:

date_default_timezone_set('Europe/London');

i en iyi cevabı, onun doğruluğu ile% 100 olamaz gibi strtotime kullanmak değil sanırım

/ - 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

http://www.php.net/manual/es/function.strtotime.php#106043

İş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');

See it in action