我提交的表单中包含日期范围选择器。
我有代码从表单中获取选择器的值,格式为:
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;
答案 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
因此,请参阅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));