将PHP的MMDDYYYY转换为日期

将PHP的MMDDYYYY转换为日期,php,datetime,date,strtotime,Php,Datetime,Date,Strtotime,我有一个日期字符串,其格式为MMDDYYYY(即01132012、01142012等) 我需要在页面上做一些事情,如果该字符串距离当前日期不超过14天 今天是011320012,所以任何日期小于等于12312011的字符串都将在页面上显示某些内容 有人能帮忙吗?我试过了 echo date("d/m/Y", strtotime('01142012')); 但是没有用。您可以使用PHP的DateTime类 <? // current date $now = new DateTime

我有一个日期字符串,其格式为MMDDYYYY(即01132012、01142012等)

我需要在页面上做一些事情,如果该字符串距离当前日期不超过14天

今天是011320012,所以任何日期小于等于12312011的字符串都将在页面上显示某些内容

有人能帮忙吗?我试过了

echo date("d/m/Y", strtotime('01142012'));

但是没有用。

您可以使用PHP的DateTime类

<?
  // current date
  $now = new DateTime();

  //your date
  $date = DateTime::createFromFormat('mdY', '01142012');

  // calculate difference 
  $diff = $now->diff($date);

  ...

  // output the date in format you want
  echo $date->format('d/m/Y');
?>

编辑:我刚刚意识到,php不支持您的格式。因此,您必须使用备用objectbuild

try date('m-d-y', strtotime('01142012'));
也可以尝试以下方式:

$var = strtotime('01142012');
$var2 = date ('F j, Y', $var);

我更喜欢使用strtime

<?
$dt = strptime('01142012', '%m%d%Y');
echo sprintf("%02d/%02d/%04d", $dt['tm_mday'], $dt['tm_mon']+1, $dt['tm_year']+1900);

来点substr+mktime怎么样

$string = '01142012';
$time = mktime(0, 0, 0, 
          substr($string, 0, 2),
          substr($string, 2, 2),
          substr($string, 4, 4)
        );
 echo date('d/m/Y', $time);

strotime()无法解析您的字符串输入“01142012”,因为它不是有效的,因为它返回-1作为答案。要将其转换为有效日期,您需要添加斜杠或破折号来分隔数字

最简单的方法是用破折号或斜杠存储日期,如“01-14-2012”或“01/14/2012”,从现在起,您必须创建自己的函数,将数字转换为strotime()的有效形式

要做到这一点,您可以这样做:

function makeValidDate($date) {

   $valid_date = array();
   $array = str_split($date); //split characters up

   foreach($array as $key => $character){
       if($key==2 || $key==4){
           $character = '-'.$character; //add relevant formatting to date
           $valid_date[] = $character; //add this to the formatted array
       }
       else{
           $valid_date[] = $character; // if not dashes or slashes needed add to valid array
       }
   }

   return implode($valid_date); // return the formmatted date for use with strtotime
}
然后,您可以执行以下操作以获取有效日期:

$valid_date = makeValidDate('01142012');    
echo date("d/m/Y", strtotime($valid_date));
我还没有测试过这个,但是你应该知道怎么做

编辑:卡皮的想法更干净

尝试“preg_match(模式,模式将应用到的字符串)”;
还可以定义偏移。所以首先取te的前两位数。然后取另外两个数字,然后取另外四个数字。然后把它们放在一根绳子里。然后使用maketime、strotime、date。这是一种愚蠢的解决方案,但我只想到了这一点。希望这将有助于

熟悉PHP手册:。获取空白页。$date=新日期时间('01142012');echo$date->format('m/d/Y')@血腥世界最好使用
DateTime::createFromFormat
-该死,我应该知道使用mktime()和substr()!