我的SQL服务器使用mm/dd/yyyy
日期格式,但我使用jQuery实现的日期选择器将日期格式设为dd/mm/yyyy
。
所以我对此进行编码以检查给定输入是否为mm/dd/yyyy
格式,但无论给出日期输入的格式如何,它都会计算为真.PHP代码是,
$Temp = DateTime::createFromFormat('d/m/Y', $StartsOn);
if($Temp)
$Temp->format('m/d/Y');
仅当输入位于mm/dd/yyyy
时,我才需要转换为dd/mm/yyyy
格式。所以请告诉我我的代码中出现了什么逻辑错误。
答案 0 :(得分:2)
无法可靠地检查日期是dd/mm/yyyy
还是mm/dd/yyyy
格式。只要考虑一下约会,就像" 5月7日"
这将是07/05/2015
或05/07/2015
,具体取决于格式。因此,如果您刚收到没有其他信息的日期字符串,则无法判断05/07/2015
是May, 7th
还是July, 5th
。
对不起,但是你的问题没有合理的解决办法。
答案 1 :(得分:0)
您可以在PHP.net中使用此功能的修改版本。它使用DateTime类:
function validateDate($date)
{
$d = DateTime::createFromFormat('d/m/Y', $date);
return $d && $d->format('d/m/Y') == $date;
}
if(validateDate($StartsOn)){
//do job
}
复制
答案 2 :(得分:0)
通过查看,可以消除m / d / y或d-m-y格式的日期 各个组件之间的分隔符:如果分隔符是a 斜线(/),然后是美国m / d / y;而如果 separator是短划线( - )或点(。),然后是欧洲d-m-y格式 假设。为避免潜在的歧义,最好使用ISO 8601 (YYYY-MM-DD)日期或DateTime :: createFromFormat()尽可能。
将日期传递给SQL服务器的原因是mm / dd / yyyy是因为分隔符。在可能的情况下,最好按照ISO 8601传递YYYY-MM-DD,这是为了这个目的而创建的。要解决您的问题,最好的办法是更改jQuery插件配置以输出该格式的数据(如果不可能,请将/
字符串替换为-
来自jQuery插件。通过编写代码来修复日期格式,这将避免将来的复杂化。
当你不知道它来自哪里时,你将无法区分mm / dd / yyyy和dd / mm / yyyy。