将html日期值隐藏到RFC 2822

时间:2016-01-20 13:23:29

标签: php

我有以下代码,

$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月08日,甚至将不同的日期传递给该功能。如何解决这个问题。

2 个答案:

答案 0 :(得分: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)

从我可以收集到的问题来看,问题不在于您共享的代码,而在于其他地方。如果我复制粘贴您的脚本并在$ date上输入固定日期,它将按预期工作。 (我已经删除了缺少vars的时间)

$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以某种方式得到一个固定的08-07-2025或其他一些输入,这将使它成为08年7月8日。