我已经使用以下代码将日期提取为$ day变量。但是,PHP似乎使用默认的配置日期格式,并假设日期格式为d-m-Y。这是我的代码:
$dateformat = "m-d-Y";
$selected_date = "04-30-2013";
$day = date(d, strtotime($selected_date));
echo $day;
有没有办法让我根据$ dateformat变量中定义的格式动态地执行PHP?
由于
答案 0 :(得分:2)
这里的问题是strtotime()
无法解析自定义格式的日期字符串。来自documentation for strtotime()
(强调我的):
通过查看各个组件之间的分隔符来消除m / d / y或d-m-y格式的日期:如果分隔符是斜杠(/),则假设为美国m / d / y;而如果分隔符是短划线( - )或点(。),则假定为欧洲d-m-y格式。 为避免潜在的歧义,最好在可能的情况下使用ISO 8601(YYYY-MM-DD)日期或
DateTime::createFromFormat()
。
解决方案是使用DateTime::createFromFormat()
。它可以使用自定义格式解析日期:
$dateObj = DateTime::createFromFormat($dateformat, $selected_date);
$day = $dateObj->format('d'); // => 30