日期格式无法正常工作

时间:2017-03-29 10:12:37

标签: php mysql date strtotime

我提交的表单中包含日期范围选择器。

我有代码从表单中获取选择器的值,格式为:

01/03/2017 - 01/03/2017

我也有它,所以它将日期范围分成两个变量。

$one = 20/01/2017
$two = 13/03/2017

我现在正在尝试将这些变量的日期格式化为MYSQL使用的日期。

我的问题是结束日期会失败并一直显示为1970-01-01。

// Get the range from the form
$daterange = $_POST["daterange"];

// Split the range into a start and end date
list($one, $two) = explode("-", "$daterange", 2);

// Test the split worked
echo $one;
echo $two;

// Format the start date into MySQL style
$StartDate = date("Y-m-d", strtotime($one));

// Test date
echo $StartDate;

// Format the end date into MySQL style
$EndDate = date("Y-m-d", strtotime($two));

//Test date
echo $EndDate;

3 个答案:

答案 0 :(得分:3)

Personnaly,我更喜欢date_create_from_format而不是任何东西。

One-liner:

$StartDate = date_create_from_format( "d/m/Y" , $one )->format("Y-m-d");

答案 1 :(得分:2)

试试这个:

$one = '20/01/2017';
$one = str_replace('/', '-', $one);
echo date('Y-m-d', strtotime($one));

//输出:2017-01-20

Working Code

  

因此,请参阅The PHP Manual for strtotime()具体说明

     

注意:   通过查看各个组件之间的分隔符来消除m / d / y或d-m-y格式的日期:如果分隔符是斜杠(/),则假设为美国m / d / y;而如果分隔符是破折号( - )或点(。),则假定为欧洲d-m-y格式。但是,如果年份以两位数格式给出,而分隔符是破折号( - ,日期字符串被解析为y-m-d。

     

为避免潜在的歧义,最好尽可能使用ISO 8601(YYYY-MM-DD)日期或DateTime :: createFromFormat()。

答案 2 :(得分:1)

使用此格式设置日期格式:

$StartDate = date_format(date_create_from_format('d/m/Y', $one), 'Y-m-d');

要反转:

$reverse = date('d/m/Y', strtotime($StartDate));