strtotime()在格式化日期抛出false

时间:2011-04-20 20:25:45

标签: php date timestamp strtotime

我将格式化的日期字符串转换为整数时间戳时遇到问题。我正在使用日期选择器输入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']) : '';

转储

var_dump($_POST); 
var_dump($date_from . ' ' . $time_from);
var_dump($date_to . ' ' . $time_to);

输出

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);

输出

bool(false)
bool(false)

现在,我正在考虑为什么它没有将DD/MM/YY HH:MM转换成时间戳,我几乎找不到它的错误......

1 个答案:

答案 0 :(得分:4)

请参阅http://php.net/strtotime

  

日期为m / d / y或d-m-y格式   通过观察来消除歧义   各种之间的分隔符   组件:如果分隔符是   斜线(/),然后是美国的m / d / y   假定;而如果分隔符是a   破折号( - )或点(。),然后是   假设欧洲d-m-y格式。

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