PHP中无法获取正确日期格式,输出1970-01-01如何解决?
解决日期转换显示1970-01-01的问题
你的问题出在strtotime()无法正确解析MM-DD-YYYY(如10-30-2022)这种美式日期格式,导致返回false。当date()函数接收false时,会将其当作Unix时间戳0处理,最终输出1970-01-01。
以下是两种可靠的修复方案:
方案一:使用DateTime类(推荐)
DateTime类支持指定输入格式解析,兼容性更强:
$start_date2 = $_POST['start_date']; // 输入为10-30-2022 $date = DateTime::createFromFormat('m-d-Y', $start_date2); $new_date = $date->format('Y-m-d'); echo $new_date; // 输出2022-10-30
方案二:转换分隔符让strtotime识别
strtotime()可以正确解析MM/DD/YYYY格式,因此将原日期的-替换为/即可:
$start_date2 = $_POST['start_date']; $formatted_date = str_replace('-', '/', $start_date2); $new_date = date('Y-m-d', strtotime($formatted_date)); echo $new_date; // 输出2022-10-30
内容的提问来源于stack exchange,提问作者coder
相关产品推荐
相关产品推荐

