2012-04-06 100 views
2

以下代码输出1970-01-01这是错误的。PHP日期问题,无法在1970-01-01之前转换日期

<?php 
$dob='17 Jan 1900'; 
$datetime = strtotime($dob); 
$dob = date("Y-m-d", $datetime); 
echo $dob; 
?> 

但是它正常工作与$dob = '17 Jan 2000';

+0

的PHP版本以及您正在使用哪种操作系统? – hakre 2012-04-06 10:06:58

回答

9

如果你的PHP版本允许它考虑使用DateTime代替的strtotime的:> = 5.2和< = 5.3之间

$date = DateTime::createFromFormat('d M Y','17 Jan 1900'); 
echo $date->format('Y-m-d'); 

对于PHP版本,只需使用DateTime构造:

$date = new DateTime('17 Jan 1900'); 
echo $date->format('Y-m-d'); 
+0

我有** PHP版本5.2.17 **,并且此方法不起作用。我需要找到其他方法。 – shaikh 2012-04-06 10:24:04

+0

编辑我应该使用PHP 5.2的答案 – grunk 2012-04-06 11:48:29

5

时间戳的有效范围一般为周五,1901年12月13日20点45分54秒 格林尼治标准时间星期二,2038年1月19日03: 14:07 GMT。 (这些日期为 ,对应于32位有符号整数的最小值和最大值)。但是,在PHP 5.1.0之前,在某些系统(例如Windows)上,该范围从 01-01-1970到19-01-2038被限制。

但是,您可以使用PHP DateTIme类。