2016-01-20 85 views
0

我有以下代碼,隱蔽HTML日期值RFC 2822

$date = $_POST["s-date"]; // get from form. value pass correctly. 
$time = "".$hour.":".$minute.":".$second.""; // ok 
    echo RFC2822($date,$time); 

function RFC2822($date,$time = '00:00') { 
    $array = list($d, $m, $y) = explode('-', $date); 
    list($h, $i, $s) = explode(':', $time); 

    return date('r', mktime($h,$i,0,$m,$d,$y)); 
} 

當我執行該腳本,時間片段被正確地打印,但日期顯示爲2025年7月8日總是偶數傳遞不同的日期到該函數。如何解決這個問題。

+0

什麼是'$ _POST ['s-date']'的值? –

+0

它喜歡2016-01-20從html日期類型輸入獲得 –

回答

1

你必須需要檢查該輸入$_POST["s-date"]的價值就必須遵循日期的格式:

`DD-MM-YY` 

,因爲你是在這種格式創建列表(DD-MM-YY):

$array = list($d, $m, $y) = explode('-', $date); 

更新1:

正如你提到的,您使用的HTML日期和HTML日期格式爲 'YYYY-MM-DD',現在只需按日期格式更改列表變量順序。

+1

我的不好。感謝它的工作 –

+0

@ChandimalHarischandra:只是改變列表變量的順序.. :) – devpro

0

從我可以收集您的問題不在於您分享的代碼,而是在其他地方。如果我複製粘貼腳本並將其放在$ date的固定日期中,它將按預期工作。 (我已經刪除$時間失蹤瓦爾)

$date = "27-02-2014"; 
echo RFC2822($date); 

function RFC2822($date,$time = '00:00:00') { 
    $array = list($d, $m, $y) = explode('-', $date); 
    list($h, $i, $s) = explode(':', $time); 

    return date('r', mktime($h,$i,0,$m,$d,$y)); 
} 

輸出

Thu, 27 Feb 2014 12:00:00 +0100 

由此我想到的是你的$_POST['s-date'] VAR莫名其妙地得到一個固定的2025年8月7日或一些其他輸入,這將使這08七月2025

+0

否它正確通過日期。 (不同日期)並正確傳遞函數。它像2016-01-20一樣。從日期類型html輸入 –

+0

獲得收益,如果是2016-01-20,那麼這是您的問題。你的功能顯然期望它是d-m-y。如果你發送年月日,你應該改變這一行: '$陣列=名單($ d,$ M,$ Y)=爆炸( ' - ',$日期);' 到 '$陣列= list($ y,$ m,$ d)= explode(' - ',$ date);' –

相關問題