首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >php中strtotime函数的错误

php中strtotime函数的错误
EN

Stack Overflow用户
提问于 2012-10-04 16:05:07
回答 3查看 1.1K关注 0票数 5

我在代码中使用strtotime()来分隔日期时遇到了问题。当我使用"/“时,格式变为mm-dd-yyyy,而当我使用”-“时,格式变为dd-mm-yyyy。当用户输入日期时,我尝试同时使用"/“和"-”

我已经使用preg_macth来验证用户是否给予了-或者/非常感谢能在这方面帮助我的人。

我的代码如下所示

代码语言:javascript
运行
复制
<?php
$date1=$_GET["q1"];
$date2= $_GET["q2"];
// To check date format for From date   
function checkDateFormat1($date1)
{
//match the format of the date
    if( (preg_match(" /^(\d{1,2})\-(\d{1,2})\-(\d{4})$/", $date1,$parts)) || (preg_match(" /^(\d{1,2})\/(\d{1,2})\/(\d{4})$/", $date1,$parts)) )
{
    //check weather the date is valid of not
    //if(checkdate($parts[2],$parts[3],$parts[1]))
    if(checkdate($parts[2],$parts[1],$parts[3]))
    return true;
    else
    return false;
}
else
return false;
}

 // To check the format for To date         
 function checkDateFormat2($date2)
{

if((preg_match(" /^(\d{1,2})\-(\d{1,2})\-(\d{4})$/", $date2,$parts))||(preg_match(" /^(\d{1,2})\/(\d{1,2})\/(\d{4})$/", $date2,$parts)))
{
    //check weather the date is valid of not
    //if(checkdate($parts[2],$parts[3],$parts[1]))
    if(checkdate($parts[2],$parts[1],$parts[3]))
    return true;
    else
    return false;
}
else
return false;
 }                      

if ((checkDateFormat2($date2) && checkDateFormat1($date1))==1)
{
if ($date1==$date2)
{
    $days="1";
    echo $days;
    exit;
}
else
{   
    $difference =(strtotime($date2) - strtotime($date1));
    //calculate the number of days
    $days = round(((($difference/60)/60)/24), 0);
}
 }
 else
 {
     echo "Invalid Date Format"."<br>";
echo "Please make sure that your for date format is MM-DD-YYYY";

exit;
        }

  if ($days<0)
 {
echo "From date cannot be greater than to date";

}   
else
{
$days++;
echo $days;


}   
 ?>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-04 16:09:46

它的工作方式与strToTime()的工作方式完全相同。摘自php手册:

备注:

通过查看各个组件之间的分隔符,可以消除m/d/yd-m-y格式中的日期的歧义:如果分隔符是斜杠(/),则假定为美国m/d/y;而如果分隔符是短划线(-)或点(.),则假定为欧洲d-m-y格式。

为了避免潜在的歧义,最好尽可能使用ISO8601dateTime或(YYYY-MM-DD)::createFromFormat()。

http://php.net/manual/en/function.strtotime.php

票数 12
EN

Stack Overflow用户

发布于 2012-10-04 16:11:42

看看standard date formats吧。只有这种格式才能被strtotime()函数识别。

如果您的日期不是标准格式,请使用DateTime::createFromFormat

代码语言:javascript
运行
复制
$d = DateTime::createFromFormat('d . Y - m', '15 . 2002 - 03');
echo $d->format('Y-m-d');
票数 3
EN

Stack Overflow用户

发布于 2012-10-04 16:13:34

尝试使用PHP的$date = DateTime::createFromFormat('Y-m-d',$YourDateString);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12722849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档