<?
//日期特殊操作控制类
//宇凡 8月29日
?>
<?
//获取"YYYY-mm-dd"格式的当前时间
function NowDate()
{
$result = date("Y")."-".date("m")."-".date("d");
return $result;
} //获取"YYYY-mm-dd HH:ii:ss"格式的当前时间
function NowDateTime()
{
$result = date("Y")."-".date("m")."-".date("d")." ".date("H").":".date("i").":".date("s");
return $result;
} //从"YYYY-mm-dd"格式的时间中提取年
function GetYear($Date)
{
$pos = strpos($Date,"-");
$result = "";
for ($i=0;$i<$pos;$i++)
{
$result = $result.$Date[$i];
}
return $result;
} //从"YYYY-mm-dd"格式的时间中提取月
function GetMonth($Date)
{

$pos1 = strpos($Date,"-");
$pos2 = strrpos($Date,"-");
$result = "";
for ($i=$pos1+1;$i<$pos2;$i++)
{
$result = $result.$Date[$i];
}
return $result;
} //从"YYYY-mm-dd"格式的时间中提取日
function GetDay($Date)
{

$pos = strrpos($Date,"-");
$result = "";
for ($i=$pos+1;$i<10;$i++)
{
$result = $result.$Date[$i];
}
return $result;
} //检查闰年,返回布尔值
function CheckLeap($year)
{
$result = (($year % 4 == 0) && (($year % 100 <> 0) || ($year % 400 == 0)));
return $result;
}

//在当前日期上加天数 返回"YYYY-mm-dd"格式的时间
function AddDay($offset)
{
$year=date("Y");
$month=date("m");
$day=date("d");
for ($i=0;$i<$offset;$i++)
{
switch ($month) {
case 1:
{
if ($day==31) { 
$day = 1;
$month = 2;
}
else {
$day=$day + 1;
}
}
break;
case 2:
{
if (CheckLeap($year)) {
if ($day == 29) { 
$day = 1;
$month = 3;
}
else {
$day=$day + 1;
}
}
else {
if ($day == 28) { 
$day = 1;
$month = 3;
}
else {
$day=$day + 1;
}
}
}
break;
case 3:
{
if ($day==31) { 
$day = 1;
$month = 4;
}
else {
$day=$day + 1;
}
}
break;
case 4:
{
if ($day==30) { 
$day = 1;
$month = 5;
}
else {
$day=$day + 1;
}
}
break;
case 5:
{
if ($day==31) { 
$day = 1;
$month = 6;
}
else {
$day=$day + 1;
}
}
break;
case 6:
{
if ($day==30) { 
$day = 1;
$month = 7;
}
else {
$day=$day + 1;
}
}
break;
case 7:
{
if ($day==31) { 
$day = 1;
$month = 8;
}
else {
$day=$day + 1;
}
}
break;
case 8:
{
if ($day==31) { 
$day = 1;
$month = 9;
}
else {
$day=$day + 1;
}
}
break;
case 9:
{
if ($day==30) { 
$day = 1;
$month = 10;
}
else {
$day=$day + 1;
}
}
break;
case 10:
{
if ($day==31) { 
$day = 1;
$month = 11;
}
else {
$day=$day + 1;
}
}
break;
case 11:
{
if ($day==30) { 
$day = 1;
$month = 12;
}
else {
$day=$day + 1;
}
}
break;
case 12:
{
if ($day==31) { 
$day = 1;
$month = 1;
$year = $year + 1;
}
else {
$day=$day + 1;
}
}
}
}
$result=$year."-".$month."-".$day;
return $result;
} //在当前日期上减天数 返回"YYYY-mm-dd"格式的时间
function AbateDay($offset)
{
$year=date("Y");
$month=date("m");
$day=date("d");
for ($i=0;$i<$offset;$i++)
{
switch ($month) {
case 1:
{
if ($day==1) { 
$day = 31;
$month = 12;
$year = $year - 1;
}
else {
$day=$day - 1;
}
}
break;
case 2:
{
if ($day == 1) { 
$day = 31;
$month = 1;
}
else {
$day=$day - 1;
}
}
break;
case 3:
{
if ($day == 1) {
if (CheckLeap($year)) {
$day = 29;
}
else {
$day = 28;
}
$month = 2;
}
else {
$day=$day - 1;
}
}
break;
case 4:
{
if ($day == 1) { 
$day = 31;
$month = 3;
}
else {
$day=$day - 1;
}
}
break;
case 5:
{
if ($day == 1) { 
$day = 30;
$month = 4;
}
else {
$day=$day - 1;
}
}
break;
case 6:
{
if ($day == 1) { 
$day = 31;
$month = 5;
}
else {
$day=$day - 1;
}
}
break;
case 7:
{
if ($day == 1) { 
$day = 30;
$month = 6;
}
else {
$day=$day - 1;
}
}
break;
case 8:
{
if ($day == 1) { 
$day = 31;
$month = 7;
}
else {
$day=$day - 1;
}
}
break;
case 9:
{
if ($day == 1) { 
$day = 31;
$month = 8;
}
else {
$day=$day - 1;
}
}
break;
case 10:
{
if ($day == 1) { 
$day = 30;
$month = 9;
}
else {
$day=$day - 1;
}
}
break;
case 11:
{
if ($day == 1) { 
$day = 31;
$month = 10;
}
else {
$day=$day - 1;
}
}
break;
case 12:
{
if ($day == 1) { 
$day = 30;
$month = 11;
}
else {
$day=$day - 1;
}
}
}
}
$result=$year."-".$month."-".$day;
return $result;
} //获取当前周第一天 返回"YYYY-mm-dd"格式的时间
function FirstDayOfThisWeek()
{
$offset=date("w");
if ($offset==0)
{
$offset=7;
}
$offset--;
$result = AbateDay($offset);
return $result;
} //获取当前周最后一天 返回"YYYY-mm-dd"格式的时间
function LastDayOfThisWeek()
{
$offset=date("w");
if ($offset==0)
{
$offset=7;
}
$offset = 7 - $offset;
$result = AddDay($offset);
return $result;
}

//获取指定月的天数
function DaysAmountOfThisMonth($month,$year)
{
switch ($month) {
case 1:
$result = 31;
break;
case 2:
{
if (CheckLeap($year)) {
$result = 29;
} else {
$result = 28;
}
break;
}
case 3:
$result = 31;
break;
case 4:
$result = 30;
break;
case 5:
$result = 31;
break;
case 6:
$result = 30;
break;
case 7:
$result = 31;
break;
case 8:
$result = 31;
break;
case 9:
$result = 30;
break;
case 10:
$result = 31;
break;
case 11:
$result = 30;
break;
case 12:
$result = 31;
break;
}
return $result;
} //获取两个日期之间的相差天数 (YYYY-mm-dd格式)
function DiffOfTwoDay($date1,$date2)
{
if ($date1 < $date2)
{
$temp = $date1;
$date1 = $date2;
$date2 = $temp;
} $year1 = GetYear($date1);
$month1 = GetMonth($date1);
$day1 = GetDay($date1); $year2 = GetYear($date2);
$month2 = GetMonth($date2);
$day2 = GetDay($date2); $diff = 0; if ($year1 == $year2)
{
if ($month1 == $month2)
{
$diff = $day1 - $day2;
}
else
{
$diff = DaysAmountOfThisMonth($month2,$year2) + $day1 - $day2;
}
}
else
{
if ($month1 > $month2)
{
$date1_t = $year2."-".$month1."-".$day1;
if (CheckLeap($year2))
{
$diff = 366 + DiffOfTwoDay($date1_t,$date2);
}
else
{
$diff = 365 + DiffOfTwoDay($date1_t,$date2);
}
}
else
{
$date1_t = $year2."-".$month1."-".$day1;
if (CheckLeap($year2))
{
$diff = 366 - DiffOfTwoDay($date1_t,$date2);
}
else
{
$diff = 365 - DiffOfTwoDay($date1_t,$date2);
}
}
}
return abs($diff);
}?>