如何计算域名年龄困扰了很久,自己写了一个函数,但是是错误的,因为有的年份是闰年的。
<?php
//时间输入必须单位
function mathAge($ymd2){
$ymd1 = "2012-2-27";
@list($y1,$m1,$d1) = explode("-",date("Y-m-d", strtotime($ymd1)));
@list($y2,$m2,$d2) = explode("-",date("Y-m-d", strtotime($ymd2)));
$arr = array(
"年" => round( $y1-$y2 ),
"月" => round( $m1-$m2 ),
"天" => round( $d1-$d2 ),
); $arr["天"] = round($d1-$d2);
while ($arr["天"] < 0) {
$arr["天"] += 30;
$arr["月"] -= 1;
}
while ($arr["月"] < 0) {
$arr["月"] += 12;
$arr["年"] -= 1;
}
$txt = '';
foreach ($arr as $k => $v)
{
if(!$v) continue;
$txt .= $v.$k;
}
echo "$ymd1 - $ymd2 = $txt \n";
return $txt;
} $dateArr = array(
"2011-12-28",
"2011-12-29",
"2011-12-27",
"2010-12-28",
"2010-12-29",
"2010-12-27",
"2011-10-1",
"2010-5-1",
"2010-2-28",
"1995-1-1",
"1995-12-31",
);
foreach ($dateArr as $date)
{
mathAge($date);
}
?>以上输出测试内容为:
2012-2-27 - 2011-12-28 = 1月29天
2012-2-27 - 2011-12-29 = 1月28天
2012-2-27 - 2011-12-27 = 2月
2012-2-27 - 2010-12-28 = 1年1月29天
2012-2-27 - 2010-12-29 = 1年1月28天
2012-2-27 - 2010-12-27 = 1年2月
2012-2-27 - 2011-10-1 = 4月26天
2012-2-27 - 2010-5-1 = 1年9月26天
2012-2-27 - 2010-2-28 = 1年11月29天
2012-2-27 - 1995-1-1 = 17年1月26天
2012-2-27 - 1995-12-31 = 16年1月26天
如何计算好两个日期之间相差的年月?考虑闰年 2月份。
<?php
//时间输入必须单位
function mathAge($ymd2){
$ymd1 = "2012-2-27";
@list($y1,$m1,$d1) = explode("-",date("Y-m-d", strtotime($ymd1)));
@list($y2,$m2,$d2) = explode("-",date("Y-m-d", strtotime($ymd2)));
$arr = array(
"年" => round( $y1-$y2 ),
"月" => round( $m1-$m2 ),
"天" => round( $d1-$d2 ),
); $arr["天"] = round($d1-$d2);
while ($arr["天"] < 0) {
$arr["天"] += 30;
$arr["月"] -= 1;
}
while ($arr["月"] < 0) {
$arr["月"] += 12;
$arr["年"] -= 1;
}
$txt = '';
foreach ($arr as $k => $v)
{
if(!$v) continue;
$txt .= $v.$k;
}
echo "$ymd1 - $ymd2 = $txt \n";
return $txt;
} $dateArr = array(
"2011-12-28",
"2011-12-29",
"2011-12-27",
"2010-12-28",
"2010-12-29",
"2010-12-27",
"2011-10-1",
"2010-5-1",
"2010-2-28",
"1995-1-1",
"1995-12-31",
);
foreach ($dateArr as $date)
{
mathAge($date);
}
?>以上输出测试内容为:
2012-2-27 - 2011-12-28 = 1月29天
2012-2-27 - 2011-12-29 = 1月28天
2012-2-27 - 2011-12-27 = 2月
2012-2-27 - 2010-12-28 = 1年1月29天
2012-2-27 - 2010-12-29 = 1年1月28天
2012-2-27 - 2010-12-27 = 1年2月
2012-2-27 - 2011-10-1 = 4月26天
2012-2-27 - 2010-5-1 = 1年9月26天
2012-2-27 - 2010-2-28 = 1年11月29天
2012-2-27 - 1995-1-1 = 17年1月26天
2012-2-27 - 1995-12-31 = 16年1月26天
如何计算好两个日期之间相差的年月?考虑闰年 2月份。
解决方案 »
- 各位仙们 帮帮忙?……
- php的ftok函数在windows下能用吗?
- 一个PHP的函数,无法使用,帮忙看看正确性
- Smarty的问题,浏览器显示白板,但查看源文件正常, 100分
- 100分的帮忙写个.htaccess的问题
- XHProf 分析结果 负数 表示什么意思
- 请问大家:我是一个php新手,不知道php连接网站怎么连?
- 那位高手帮我解释一下在文件下载时这些http头的参数的意思?
- php中怎么调用ORACLE的存储过程(急!!!)
- 有哪些网络公司有对PHP的支持比较好的虚拟服务器。
- php查询mysql数据库 查询条件为中文字符串变量时无法查询
- HTML中的<ol><li>标签复制时如何去掉序号
/* 计算域名年龄 */
function MathDomainAge($ymd2){
$ymd1 = date("Y-m-d");
$ymd2 = date("Y-m-d", strtotime($ymd2)); if($ymd1 == $ymd2) return '今日';
if($ymd2 > $ymd1) return '-'; @list($y1,$m1,$d1) = explode("-",$ymd1);
@list($y2,$m2,$d2) = explode("-",$ymd2); $arr = array(
"年" => round( $y1-$y2 ),
"月" => round( $m1-$m2 ),
"天" => round( $d1-$d2 ),
); while ($arr["天"] < 0) {
$arr["天"] += 30;
$arr["月"] -= 1;
} while ($arr["月"] < 0) {
$arr["月"] += 12;
$arr["年"] -= 1;
}
$txt = '';
foreach ($arr as $k => $v)
{
if(!$v) continue;
$txt .= $v.$k;
}
return $txt;
}