Strtotime()对格式化日期抛出false



我在将格式化日期字符串转换为整数时间戳时遇到问题。我使用一个日期选择器来输入一个字段,如DD/MM/YY,我使用strtotime来改变它。

$date_from = (!empty($_POST['datefrom'])) ? (string) $db->sql_escape($_POST['datefrom']) : false;
$date_to   = (!empty($_POST['dateto'])) ? (string) $db->sql_escape($_POST['dateto']) : false;
$time_from = (!empty($_POST['timefrom'])) ? (string) $db->sql_escape($_POST['timefrom']) : '';
$time_to   = (!empty($_POST['timeto'])) ? (string) $db->sql_escape($_POST['timeto']) : '';
<<p> 转储/strong>
var_dump($_POST); 
var_dump($date_from . ' ' . $time_from);
var_dump($date_to . ' ' . $time_to);
<<p> 输出/em>
array(4) {
  ["datefrom"]=>
  string(10) "23/03/2011"
  ["dateto"]=>
  string(10) "18/04/2011"
  ["timefrom"]=>
  string(5) "01:26"
  ["timeto"]=>
  string(5) "04:44"
}
string(16) "23/03/2011 01:26"
string(16) "18/04/2011 04:44"

现在您可以看到每个变量都不是空的,现在没有返回(除了false)当使用strtotime时:

$range_from = strtotime($date_from . ' ' . $time_from);
$range_to   = strtotime($date_to . ' ' . $time_to);
var_dump($range_from);
var_dump($range_to);
<<p> 输出/em>
bool(false)
bool(false)

现在这就是我卡住思考为什么它不转换为时间戳的DD/MM/YY HH:MM,我几乎找不到它有什么问题…

参见http://php.net/strtotime

日期,格式为m/d/y或d-m-y是否消除了歧义各种之间的分隔组件:如果分隔符是a斜杠(/),则美式的m/d/y是假设;然而如果分隔符是a破折号(-)或点(.),然后是采用欧洲d-m-y格式。

23/03/2011在m/d/y中无效,因此函数返回false。

相关内容

  • 没有找到相关文章

最新更新