2013-04-16 36 views
0

阅读并重新阅读文档,真正无法解释的有效日期为什么$ DATE1来通过坏PHP的日期格式化帮助日期格式不给,即使它匹配文档

有人可以帮忙吗?不胜感激,

$date1 = "04-16-2013"; 
$date2 = "2013-04-16"; 
printf("date1 = %s\n", $date1); 
printf("date2 = %s\n", $date2); 

$newdate1 = date('m-d-Y',$date1); 
$newdate2 = date('Y-m-d',$date2); 
printf("newdate1 = %s\n", $newdate1); 
printf("newdate2 = %s\n", $newdate2); 

$previous_date = date('m-d-Y', strtotime($date1 .' -1 day')); 
$previous_date2 = date('m-d-Y', strtotime($date2 .' -1 day')); 
printf("previous_date = %s\n", $previous_date); 
printf("previous_date2 = %s\n", $previous_date2); 

输出

date1 = 04-16-2013 
    date2 = 2013-04-16 
    newdate1 = 12-31-1969 
    newdate2 = 1969-12-31 
    previous_date = 12-31-1969 
    previous_date2 = 04-15-2013 
+0

上依次通知。 “注意:在第7行”/ code/79qfex中遇到的格式不正确的数字值“ – 2013-04-16 22:53:44

+0

在第1行不是$ date1坏的?我希望它是“16-04-2013”​​ – vidario

回答

1

strtotime功能

通过查看 各分量之间的分隔符,可以对m/d/y或d-m-y格式的日期进行消歧:如果分隔符是 斜杠(/),则假定为美国m/d/y;而如果 分隔符是破折号( - )或点(。),则假定欧洲的d-m-y格式为 。

为避免潜在的歧义,最好尽可能使用ISO 8601(YYYY-MM-DD) 日期或DateTime::createFromFormat()

在你的情况,因为你正在使用分隔符破折号( - )PHP认为日期格式是在D - M - Y。

或替代方法:

$date1 = "04-16-2013"; 
$date2 = "2013-04-16"; 
printf("date1 = %s\n", $date1); 
printf("date2 = %s\n", $date2); 


$newdate1 = date('m-d-Y',strtotime(str_replace("-","/",$date1))); 
$newdate2 = date('Y-m-d', strtotime($date2)); 
printf("newdate1 = %s\n", $newdate1); 
printf("newdate2 = %s\n", $newdate2); 


$previous_date = date('m-d-Y', strtotime(str_replace("-","/",$date1) .' -1 day')); 
$previous_date2 = date('m-d-Y', strtotime($date2 .' -1 day')); 
printf("previous_date = %s\n", $previous_date); 
printf("previous_date2 = %s\n", $previous_date2); 
+0

总之......谢谢你,虽然我明白了陷阱 – morty346

0

你的情况试试这个:

$date1 = "04-16-2013"; 
$date = date_create_from_format('m-j-Y', $date1); 
echo date_format($date, 'd-m-Y'); 

首先输入月 - 日 - 年....然后输出日 - 月 - 年

+0

既不可行 - $ date1 =“04-10-2013”​​; $ fecha = new DateTime($ date1); echo $ fecha-> ​​format('m-d-Y'); 给我的10-4-2013 ---如果我将日期更改为04-16-2013它会抛出异常 异常'异常'与消息'DateTime :: __ construct()[datetime.--construct]:无法解析时间字符串(04-16-2013)在位置0(0):意外字符' 和选项1:给了我错误的日期04-04-2014假设它假设为ad而不是aj所以试过并得到04-04 -2014 – morty346

+0

我更新了代码并在我的本地主机上进行了测试;) – Hackerman