时间 helper

time.helper.php

<?php
/**
* 根据时间格式获取时间戳(格式:2012-3-29 12:22:10 或 2012年3月29[日] 12时22分10[秒])
* @param string $dtime 格式时间
* @return string 时间戳
*/
function GetMkTime($dtime) {
	if(!preg_match("/[^0-9]/", $dtime)) {
		return $dtime;
	}
	$dtime = trim($dtime);
	$dt = Array(1970, 1, 1, 0, 0, 0);
	$dtime = preg_replace("/[\r\n\t]|日|秒/", " ", $dtime);
	$dtime = str_replace("年", "-", $dtime);
	$dtime = str_replace("月", "-", $dtime);
	$dtime = str_replace("时", ":", $dtime);
	$dtime = str_replace("分", ":", $dtime);
	$dtime = trim(preg_replace("/[ ]{1,}/", " ", $dtime));
	$ds = explode(" ", $dtime);
	$ymd = explode("-", $ds[0]);
	if(!isset($ymd[1])) {
		$ymd = explode(".", $ds[0]);
	}
	if(isset($ymd[0])) {
		$dt[0] = $ymd[0];
	}
	if(isset($ymd[1])) $dt[1] = $ymd[1];
	if(isset($ymd[2])) $dt[2] = $ymd[2];
	if(strlen($dt[0])==2) $dt[0] = '20'.$dt[0];
	if(isset($ds[1])) {
		$hms = explode(":", $ds[1]);
		if(isset($hms[0])) $dt[3] = $hms[0];
		if(isset($hms[1])) $dt[4] = $hms[1];
		if(isset($hms[2])) $dt[5] = $hms[2];
	}
	foreach($dt as $k=>$v) {
		$v = preg_replace("/^0{1,}/", '', trim($v));
		if($v=='') {
			$dt[$k] = 0;
		}
	}
	$mt = mktime($dt[3], $dt[4], $dt[5], $dt[1], $dt[2], $dt[0]);
	if(!empty($mt)) {
		  return $mt;
	} else {
		  return time();
	}
}

/**
* 减去时间
* @param string $ntime 时间戳1
* @param string $ctime 时间戳2
* @return int 天数
*/
function SubDay($ntime, $ctime) {
	$dayst = 3600 * 24;
	$cday = ceil(($ntime-$ctime)/$dayst);
	return $cday;
}

/**
* 增加时间
* @param string $ntime 时间戳
* @param string $aday 天数
* @return string 时间戳
*/
function AddDay($ntime, $aday){
	$dayst = 3600 * 24;
	$oktime = $ntime + ($aday * $dayst);
	return $oktime;
}

/**
* 格式化时间
* @param string $f 格式(默认Y-m-d H:i:s)
* @param string $ntime 时间戳
* @return string
*/
function formatTime($ntime, $f='Y-m-d H:i:s') {
	return date($f, $ntime);
}

/**
* 将时间转换为距离现在的精确时间
* @param string $seconds 秒数(或者是两时间戳的差值)
* @return string
*/
function floorTime($seconds){
	$times = '';
	$days = floor(($seconds/86400)%30);
	$hours = floor(($seconds/3600)%24);
	$minutes = floor(($seconds/60)%60);
	$seconds = floor($seconds%60);
	if($seconds >= 1) $times .= $seconds.'秒';
	if($minutes >= 1) $times = $minutes.'分钟 '.$times;
	if($hours >= 1) $times = $hours.'小时 '.$times;
	if($days >= 1)  $times = $days.'天';
	if($days > 30) return false;
	$times .= '前';
	return str_replace(" ", '', $times);
}
/**
 * 获取周的日期段
 * @param int $week 年的第几周
 * @param int $year 年
 * @return Array
*/
function getWeekDate($week,$year) {
    $timestamp = mktime(0,0,0,1,1,$year);
    $dayofweek = date("w",$timestamp);
    if( $week != 1)
    $distance = ($week-1)*7-$dayofweek+1;
    $passed_seconds = $distance * 86400;
    $timestamp += $passed_seconds;
    $firt_date_of_week = date("Y-m-d",$timestamp);
    if($week == 1) $distance = 7-$dayofweek;
    else $distance = 6;
    $timestamp += $distance * 86400;
    $last_date_of_week = date("Y-m-d",$timestamp);
    return array('start_date'=>$firt_date_of_week,'end_date'=>$last_date_of_week);
}
//此方法调用举例
//$week = date('W', time());
//print_r(getWeekDate($week, 2013));
?>

注:源代码出自 dedecms
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值