php 1970-01-01中的日期转换

php 1970-01-01中的日期转换,php,Php,大家好,我使用的日期转换如下 $startdate='12/10/2012'; $newstartdate = date('Y-m-d',strtotime($startdate)); 有时它能工作,但有时它显示1970-01-01 示例:2012年10月12日工程 2012年10月13日不工作显示1970-01-01 如果您使用/字符分隔日期,它将其视为mm/dd/yy。一年只有12个月 对于顺序合理的日期,请使用连字符 $startdate='12-10-2012'; $newstart

大家好,我使用的日期转换如下

$startdate='12/10/2012'; 
$newstartdate = date('Y-m-d',strtotime($startdate));
有时它能工作,但有时它显示1970-01-01

示例:2012年10月12日工程 2012年10月13日不工作显示1970-01-01

如果您使用/字符分隔日期,它将其视为mm/dd/yy。一年只有12个月

对于顺序合理的日期,请使用连字符

$startdate='12-10-2012';
$newstartdate = date('Y-m-d',strtotime($startdate));
用于指定日期格式

$date = DateTime::createFromFormat('d/m/Y', '13/10/2012');
echo $date->format('Y-m-d');
从:函数期望得到一个包含英文日期格式的字符串

2012年10月13日的英文文件对此有误;应该说,美式格式是指第十三个月的第十天。公历中不存在第十三个月,因此strotime会给出失败结果0,如果用作Unix时间戳,则会转换为1970-01-01


用于处理不同格式的日期。

这可能是因为PHP假定2012年12月10日为2012年12月10日,这是正常的,而2012年10月13日为未定义月份的第10日,因此无法正确计算。

按照上述日期类和链接呈现输出,然而,如果您仍然坚持使用这种方法,请尝试这样做,这只是一种学习方法,可以在PHP中进行更多的研究,但是这是一段非常糟糕的代码:P
$startdate1='13/10/2012'; 
$myarr = explode('/',$startdate1);

$mynewdate = $myarr[1].'/'.$myarr[0].'/'.$myarr[2];

$newstartdate1 = date('Y-m-d',strtotime($mynewdate));

echo $newstartdate1;

下面的代码可能会有所帮助。它将/替换为-:


最好使用组件代替原始函数。2012年10月13日在英国是指第10个月的第13天。这是美国的格式,颠倒月份和日期。这里的文档有点差,您需要深入挖掘日期和时间格式页面以获得适当的解释。@Quentin抱歉。我只是引用文件而已。我本人是荷兰人,我们也使用dd-mm-yyyy格式。但请注意,我不是说它是“在英国”,而是“在英语格式”。我会更新我的答案。请不要给出教你糟糕编程的答案。永远不要做日期算术和自我分析,你甚至承认这一点。有很多库和工具。例如strftime。@BartFriederichs Thx获取信息,但我清楚地提到了这是一种非常糟糕的方式。.他实际使用的日期格式是错误的,但我刚刚发布了这篇文章,这让他在现实生活中增强了编码/日期时间处理bcoz的视野,有时你可能不得不站在白线之外;我明白,但我认为我们应该尽力给出最好的答案,同时“教”好的编程。如果你现在遇到这个问题,你会看到你的建议,人们不会阅读你的评论,只是盲目地复制代码,看看它是否有效,世界上还有另一段糟糕的代码。特别是在PHP中,它在计算世界中的形象已经非常糟糕。只有我的两分钱。@BartFriederichs very true+1,特别是在PHP方面,它在计算世界中已经有一个非常糟糕的形象:我喜欢分享PHP的好坏,这就是我学习PHP的方式:Thx for ur每个单词:是的,我有很多理由。首先,它取决于服务器的时区。@diEcho处理日期字符串时,它总是取决于时区。你说它取决于时区是什么意思?意思是它需要服务器时区。当我们上传网站时,我们无法控制服务器时区。或者在使用datetime::Functions之前必须设置时区。您可以在SO本身上看到关于datetime的多个项目。请看:一旦我也遇到了同样的问题,请看这里:您可以改进这个答案,并解释为什么替换/使用-解决了这个问题。
$startdate='12/10/2012'; 
$date1 = strtr($startdate, '/', '-');
echo date('Y-m-d', strtotime($date1));