我有一个字符串,它的日期格式是MMDDYYYY(例如:01132012、01142012等)
如果该字符串距离当前日期不足14天,我需要在页面上执行某些操作。
例如,今天是01132012,所以任何日期为12312011或更早的字符串都将在页面上显示某些内容。
有人能帮忙吗?我已经尝试过
echo date("d/m/Y", strtotime('01142012'));
但是毫无效果。
<?
// 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支持。所以你需要使用备用的对象构建。
$date = new DateTime('01142012');
echo $date->format('m/d/Y'); - jsquadrillaDateTime::createFromFormat
- http://www.php.net/manual/en/datetime.createfromformat.php - Timur我更喜欢使用strptime。
<?
$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);
try date('m-d-y', strtotime('01142012'));
你也可以尝试类似这样的代码:
$var = strtotime('01142012');
$var2 = date ('F j, Y', $var);
您输入的字符串 '01142012' 无法被strtotime()解析,因为它不是一个有效的日期格式,返回值为-1。要将其转换为有效的日期,您需要添加斜杠或破折号来分隔数字。
最简单的方法是从现在开始将日期存储为带有破折号或斜杠的格式,例如 '01-14-2012' 或 '01/14/2012',存储在数据库中,否则您将需要创建自己的函数来将数字转换为strtotime()可接受的格式。
您可以像这样操作:
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));
我没有测试过,但你应该能够很好地理解要做什么。
编辑:Capi的想法更加简洁!
strptime
函数:strptime
。 - outis