php 5.2+提供了DateTime类来处理这样的问题,参考方案如下(请注意时区的处理):
创新互联建站专业为企业提供武威网站建设、武威做网站、武威网站设计、武威网站制作等企业网站建设、网页设计与制作、武威企业网站模板建站服务,十载武威做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
//1、Unix时间戳转日期 function unixtime_to_date($unixtime, $timezone = 'PRC') { $datetime = new DateTime("@$unixtime"); //DateTime类的bug,加入@可以将Unix时间戳作为参数传入 $datetime-setTimezone(new DateTimeZone($timezone)); return $datetime-format("Y-m-d H:i:s"); }
//2、日期转Unix时间戳
function date_to_unixtime($date, $timezone = 'PRC') {
$datetime= new DateTime($date, new DateTimeZone($timezone));
return $datetime-format('U');
}
echo date_to_unixtime("1900-1-31 00:00:00"); //输出-2206425952
echo 'br';
echo unixtime_to_date(date_to_unixtime("1900-1-31 00:00:00")); //输出1900-01-31 00:00:00
php处理数据时会有一个等待时间,就是所说的超时时间,而且如果使用mysql的话,它也有一个超时时间,运行一串代码时间如果超过配置文件的时间,会被中断不运行。第一种你可以修改php配置文件timeout的运行时间,第二你可以分批处理大量数据,注意是分批处理,就OK了。
函数名:date_format
参数: $string 时间源,可以是2006-04-24 09:56:07这种格式,$format要格式化的形式,如%Y年%m月%d日%H时%M分%S秒看需要删改
示例:?php
echo date_format($rs['time'],'%Y年%m月%d日%H时%M分%S秒');
?
function date_format($string, $format="%b %e, %Y", $default_date=null)
{
if (substr(php_OS,0,3) == 'WIN') {
$_win_from = array ('%e', '%T', '%D');
$_win_to = array ('%#d', '%H:%M:%S', '%m/%d/%y');
$format = str_replace($_win_from, $_win_to, $format);
}
if($string != '') {
return strftime($format, smarty_make_timestamp($string));
} elseif (isset($default_date) $default_date != '') {
return strftime($format, smarty_make_timestamp($default_date));
} else {
return;
}
} function smarty_make_timestamp($string)
{
if(empty($string)) {
$string = "now";
}
$time = strtotime($string);
if (is_numeric($time) $time != -1)
return $time; // is mysql timestamp format of YYYYMMDDHHMMSS?
if (PReg_match('/^\d{14}$/', $string)) {
$time = mktime(substr($string,8,2),substr($string,10,2),substr($string,12,2),
substr($string,4,2),substr($string,6,2),substr($string,0,4)); return $time;
} // couldn't recognize it, try to return a time
$time = (int) $string;
if ($time 0)
return $time;
else
return time();
下面是时间戳查询。如果数据库时间显示的是 2011-04-05 那就不需要 用 strtotime 时间戳转换函数:
$timea = strtotime($_POST['timea']);
$timeb = strtotime($_POST['timeb']);
$sq2="select * from `ecs_order_info` where add_time between '$timea' and '$timeb' and `quanxian`='$dangqian' order by `order_id` DESC limit 50";
$sql = mysql_query($sq2);
扩展资料
在php中完成
1、UNIX时间戳转换为日期用函数: date()
一般形式:date('Y-m-d H:i:s', 1156219870);
2、日期转换为UNIX时间戳用函数:strtotime()
一般形式:strtotime('2010-03-24 08:15:42');
在MySQL中完成
这种方式在MySQL查询语句中转换,优点是不占用PHP解析器的解析时间,速度快,缺点是只能用在数据库查询中,有局限性。
1、UNIX时间戳转换为日期用函数: FROM_UNIXTIME()
一般形式:select FROM_UNIXTIME(1156219870);
2、日期转换为UNIX时间戳用函数: UNIX_TIMESTAMP()
一般形式:Select UNIX_TIMESTAMP('2006-11-04 12:23:00′);
举例:mysql查询当天的记录数:
$sql=”select * from message Where DATE_FORMAT(FROM_UNIXTIME(chattime),'%Y-%m-%d') = DATE_FORMAT(NOW(),'%Y-%m-%d') order by id desc”。