时间或日期类汇总
将时间戳转换为日期时间
function datetime($time, $format = 'Y-m-d H:i:s')
{
$time = is_numeric($time) ? $time : strtotime($time);
return date($format, $time);
}
获取语义化时间
function human_date($time, $local = null)
{
$timediff = (is_null($local) || $local ? time() : $local) - $remote;
$chunks = array(
array(60 * 60 * 24 * 365, 'year'),
array(60 * 60 * 24 * 30, 'month'),
array(60 * 60 * 24 * 7, 'week'),
array(60 * 60 * 24, 'day'),
array(60 * 60, 'hour'),
array(60, 'minute'),
array(1, 'second')
);
for ($i = 0, $j = count($chunks); $i < $j; $i++) {
$seconds = $chunks[$i][0];
$name = $chunks[$i][1];
if (($count = floor($timediff / $seconds)) != 0) {
break;
}
}
return __("%d {$name}%s ago", $count, ($count > 1 ? 's' : ''));
}
function format_date($time)
{
$t = time() - $time;
$f = array(
'31536000' => '年',
'2592000' => '个月',
'604800' => '星期',
'86400' => '天',
'3600' => '小时',
'60' => '分钟',
'1' => '秒'
);
foreach ($f as $k => $v) {
if (0 != $c = floor($t / (int)$k)) {
return $c . $v . '前';
}
}
}
今天开始的Y-m-d H:i:s
function beginToday()
{
return date('Y-m-d') . ' 00:00:00';
}
今天结束的Y-m-d H:i:s
function endToday()
{
return date('Y-m-d') . ' 23:59:59';
}
本周的开始日期
/**
* 本周的开始日期
*
* @param bool $His 是否展示时分秒 默认true
*
* @return false|string
*/
function beginWeek($His = true)
{
$timestamp = mktime(0, 0, 0, date('m'), date('d') - date('w') + 1, date('Y'));
return $His ? date('Y-m-d H:i:s', $timestamp) : date('Y-m-d', $timestamp);
}
本周的结束日期
/**
* 本周的结束日期
*
* @param bool $His 是否展示时分秒 默认true
*
* @return false|string
*/
function endWeek($His = true)
{
$timestamp = mktime(23, 59, 59, date('m'), date('d') - date('w') + 7, date('Y'));
return $His ? date('Y-m-d H:i:s', $timestamp) : date('Y-m-d', $timestamp);
}
本月的开始日期
/**
* 本月的开始日期
*
* @param bool $His 是否展示时分秒 默认true
*
* @return false|string
*/
function beginMonth($His = true)
{
$timestamp = mktime(0, 0, 0, date('m'), 1, date('Y'));
return $His ? date('Y-m-d H:i:s', $timestamp) : date('Y-m-d', $timestamp);
}
本月的结束日期
/**
* 本月的结束日期
*
* @param bool $His 是否展示时分秒 默认true
*
* @return false|string
*/
function endMonth($His = true)
{
$timestamp = mktime(23, 59, 59, date('m'), date('t'), date('Y'));
return $His ? date('Y-m-d H:i:s', $timestamp) : date('Y-m-d', $timestamp);
}
今年的开始日期
/**
* 今年的开始日期
*
* @param bool $His 是否展示时分秒 默认true
*
* @return false|string
*/
function beginYear($His = true)
{
$timestamp = mktime(0, 0, 0, 1, 1, date('Y'));
return $His ? date('Y-m-d H:i:s', $timestamp) : date('Y-m-d', $timestamp);
}
今年的结束日期
/**
* 今年的结束日期
*
* @param bool $His 是否展示时分秒 默认true
*
* @return false|string
*/
function endYear($His = true)
{
$timestamp = mktime(23, 59, 59, 12, 31, date('Y'));
return $His ? date('Y-m-d H:i:s', $timestamp) : date('Y-m-d', $timestamp);
}
根据时间戳返回星期几
function weekday($time)
{
if (is_numeric($time)) {
$weekday = array('星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六');
return $weekday[date('w', $time)];
}
return false;
}