sorunlar sorgu dizesinden değerler alma

2 Cevap php

Gayet iyi çalışıyor başka bir işlev kopyalanan Benim aşağıda fonksiyonu. Sorgu dize değerleri almak ve bir tarih bunları açmak gerekir:

function updateShift()
    {
    	echo $name = $_GET['shift_name'];

    	echo $start_date = date('Y-m-d H:i:s', strtotime("{$_GET['start_hours']}:{$_GET['start_minutes']} {$_GET['start_ampm']}"));
    	echo $stop_date = date('Y-m-d H:i:s', strtotime("{$_GET['stop_hours']}:{$_GET['stop_minutes']} {$_GET['stop_ampm']}"));
}

Ancak döndürür:

Shift Name
1969-12-31 17:00:00
1969-12-31 17:00:00

Bu burada başka yerde değil, gayet iyi çalışıyor Herhangi bir fikir neden? Doğru geliyor shift_name kanıtladığı gibi sorgu dizesi var.

2 Cevap

Eğer alınan tarih tarih işlev çağrısı yanlış almak (veya 0), ikinci argüman olarak beri Unix dönemin başlangıcı idi. Ben sadece senin kodu kullanarak bazı hızlı testler koştu ve ben o strtotime verilen değerler ile yanlış dönen görüyorum.

echo "{$_GET['start_hours']}:{$_GET['start_minutes']} {$_GET['start_ampm']}";
=> '4:0 PM'

Sen emin strtotime geçerli bir zaman olarak görmek ve doğru bir şekilde ayrıştırmak için izin vermek için dakikasında alanında 2 basamak var olun gerekir. Bunun için size, sorgu dizesi güncelleştirmek için geçerli olmak üzere sefer için gereklidir 2 basamak sağlamak için str_pad veya sprintf'i kullanabilir ya.

Ne bu yaparsanız:

function updateShift()
    {
        echo $name = $_GET['shift_name'];

        echo $start_date = date('Y-m-d H:i:s', strtotime($_GET['start_hours'].':'.$_GET['start_minutes'].' '.$_GET['start_ampm']));
        echo $stop_date = date('Y-m-d H:i:s', strtotime($_GET['stop_hours'].':'.$_GET['stop_minutes'].' '.$_GET['stop_ampm']));
}

veya

function updateShift()
    {
        echo $_GET['shift_name'];

        echo date('Y-m-d H:i:s', strtotime($_GET['start_hours'].':'.$_GET['start_minutes'].' '.$_GET['start_ampm']));
        echo date('Y-m-d H:i:s', strtotime($_GET['stop_hours'].':'.$_GET['stop_minutes'].' '.$_GET['stop_ampm']));
}