strtotime总是返回01-1-1970


strtotime always returns 01-1-1970

我真的尝试了一切,我从日期选择器中得到了我的日期,如下所示:2016年10月5日

然后我将/替换为-。使用strtotime,但我总是得到01-1-1970。

这是我的代码:

 if (isset($_POST['CampaignName']) && isset($_POST['CampaginBudget']) && isset($_POST['start_date']) && isset($_POST['end_date']) && $email  )
 {
   // receiving the post params
    $CampaignName= $_POST['CampaignName'];
    $CampaignBudget = $_POST['CampaginBudget'];
    $start_date= str_replace('/', '-', $_POST['start_date']);
    $end_date = explode('/', $end_date);
    $start_date = date('Y-m-d', strtotime($start_date));
    $end_date = date('Y-m-d', strtotime(implode('-', strtotime($end_date))));
    //$end_date = date('Y-m-d', strtotime($end_date2));
    echo $start_date;  echo $end_date;

编辑:开始日期工作正常,但结束日期有问题。即使它们是完全相同的

html代码:

Campaign Duration :<input type="text" name="start_date" class="form-control" id="datetimepicker" placeholder="mm/dd/yyyy"/  required> <span> TO </span>  <input type="text" name="end_date" class="form-control" id="datetimepicker2" placeholder="mm/dd/yyyy"/   required>

你试过这个吗?

$originalDate = $_POST['start_date'];
echo $newDate = date("Y-m-d", strtotime($originalDate));

您在结束日期上没有执行双倍时间的strtotime,这就是为什么会出现问题:

对于结束日期,只需执行:

$end_date = explode('/', $end_date);
$end_date = date('Y-m-d', strtotime(implode('-', $end_date))); // remove strtotime from implode function

完整代码:

if (isset($_POST['CampaignName']) && isset($_POST['CampaginBudget']) && isset($_POST['start_date']) && isset($_POST['end_date']) && $email  )
 {
   // receiving the post params
    $CampaignName= $_POST['CampaignName'];
    $CampaignBudget = $_POST['CampaginBudget'];
    $start_date= str_replace('/', '-', $_POST['start_date']);
    $start_date = date('Y-m-d', strtotime($start_date));
    $end_date = $_POST['end_date']; // add this line
    $end_date = explode('/', $end_date);
    $end_date = date('Y-m-d', strtotime(implode('-', $end_date))); // remove strtotime from implode function
    echo $start_date;  echo $end_date;