Php 带年份的STROTIME,2位格式

Php 带年份的STROTIME,2位格式,php,Php,喂,有人能解释一下strotime函数在非标准格式中的年行为吗 echo date("d-m-Y",strtotime('02-12-10')) .'<br>'; //10-12-2002 echo date("d-m-Y",strtotime('09.09.10')) .'<br>'; //02-09-2010 --How this is interpreted? echo date("d-m-Y",strtotime('02-12-2010')) .'<br

喂,有人能解释一下strotime函数在非标准格式中的年行为吗

echo date("d-m-Y",strtotime('02-12-10')) .'<br>'; //10-12-2002
echo date("d-m-Y",strtotime('09.09.10')) .'<br>'; //02-09-2010 --How this is interpreted?


echo date("d-m-Y",strtotime('02-12-2010')) .'<br>'; //02-02-2010
echo date("d-m-Y",strtotime('09.09.2010')) .'<br>'; //09-09-2010
echo日期(“d-m-Y”,标准时间(“02-12-10”)。
//10-12-2002 回音日期(“d-m-Y”,标准时间(“09.09.10”)。
//2010年9月2日——这是如何解释的? 回音日期(“d-m-Y”,标准时间(“02-12-2010”)。
//02-02-2010 回音日期(“d-m-Y”,标准时间(“2010年9月9日”)。
//09-09-2010

我想将dd.mm.yy(09.09.10)格式的字符串转换为datetime格式。

这不是两位数的年份问题。 这是非标准格式问题。
仅仅从一个程序中问一些不可能的事情。
即使是我,不是电脑,也不知道这09年的厄运对你的约会意味着什么。现在是日、月、年吗?或
年.月.日
或其他什么?
假设是
日.月.年

$list($d,$m,$y) = explode("09.09.10");
echo "$d-$m-20$y";
从:

“日、月和两位数年份,带点或制表符”格式(dd[.\t]mm.“yy”仅适用于年份值61(含)至99(含)-在这些年份之外,时间格式“HH[.:]mm[.:]SS”具有优先权

您使用的是
'09.09.10'
而10不在有效范围内,因此将分隔符更改为
-

strotime()
在这种情况下可能有点不稳定。它可以识别标准的美国日期格式

如果您可以使用PHP> 5.3,请考虑使用具有接受预定义格式字符串来解析传入数据的大优势。p>


在5.3之前的平台上,似乎提供了第二个最佳选择。它在Windows上不可用,并且有一些小问题-请确保在使用前阅读手册页

谢谢你的回复和解释。由于我是PHP新手,如果您能解释一下为什么,echo date(“d-m-Y”,strotime(“02-12-10”),结果是10-12-2002,而不是02-12,那就太好了-2010@lucky当
strotime
不明确时(=当所有成员只有两位数字时),它将恢复为Y-m-d。我认为你对此无能为力。你需要使用一个解析函数,你可以强制一个模式,或者像Col.Shrapnel那样手动分解日期。我不同意这个答案,基于架构的原因。在试图将非标准日期解析为更有用的形式之前,几乎总是首先对其进行标准化,如果可能的话,由提交人验证是否正确。@hopeseek定义“标准”。在我的祖国德国,“09.09.10”是一个有效的格式,意思是2010年9月9日。有什么理由反对直接将时间戳转换为时间戳,而不是先使用繁琐的字符串操作将其转换为ISO日期?对我来说毫无意义。@Pekka,就连PHP手册都对strtime()有很大的警告。“它说用它来代替。”Hopeseek仔细看看我的答案,这也是我推荐的第一件事。它并不总是一个选项,因为它是PHP>5。3@Lucky给自己准备一份日历,仔细查看“二月”页面。注意到什么了吗这是标准的德语格式。请用标准德语检查。这里是09.09.10。代表2010年9月9日。此外,我并不是在问程序中不可能的事情。@lucky,这是本地mssql标准。但是还有很多其他的标准,没有人能确切地告诉你这里指的是哪一个。实际上,strotime()设计用于识别不可解析的口头日期格式。对于这样一种正式的格式,使用它太过分了。我会使用我提供并继续使用的代码,而不是寻找正义的日子