将PHP的MMDDYYYY转换为日期
我有一个日期字符串,其格式为MMDDYYYY(即01132012、01142012等) 我需要在页面上做一些事情,如果该字符串距离当前日期不超过14天 今天是011320012,所以任何日期小于等于12312011的字符串都将在页面上显示某些内容 有人能帮忙吗?我试过了将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
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()!