写过PHP+MySQL的程序员都知道有时间差,UNIX时间戳和格式化日期是我们常打交道的两个时间表示形式,Unix时间戳存储、处理方便,但是不直观,格式化日期直观,但是处理起来不如Unix时间戳那么自如,所以有的时候需要互相转换,下面给出互相转换的几种转换方式。
创新互联是一家专业提供磐石企业网站建设,专注与做网站、成都做网站、HTML5建站、小程序制作等业务。10年已为磐石众多企业、政府机构等服务。创新互联专业的建站公司优惠进行中。
一、在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”;
当然大家也可以选择在PHP中进行转换,下面说说在PHP中转换。
二、在PHP中完成
这种方式在PHP程序中完成转换,优点是无论是不是数据库中查询获得的数据都能转换,转换范围不受限制,缺点是占用PHP解析器的解析时间,速度相对慢。
1.
UNIX时间戳转换为日期用函数:
date()
一般形式:date('Y-m-d
H:i:s',
1156219870);
2.
日期转换为UNIX时间戳用函数:strtotime()
一般形式:strtotime('2010-03-24
08:15:42');
?php
echo date('Y-m-d', strtotime('20150203'));
strtotime 这个函数用来处理时间很好用,下面几个例子。
一天前 strtotime('-1 day');
七天前 strtotime('-7 days');
另外这个strtotime 对其他时间格式识别也很好用 yyyy/mm/dd yyyymmdd 等。
配合 date 就可以格式你想要的日期,
你问的这个就是 yyyymmdd 格式化为 yyyy-mm-dd。
=======
另外附一个该函数的手册的链接,里面还有其他好多用法:
php日期格式转换总结:
?php
//将当前时间转换成yyyy-mm-dd格式串,再转换成日期格式,绕了一圈哈
echo strtotime(date('Y-m-d',time()).' 00:00:00');
//将GNU 日期输入格式的字符转换成时间
echo strtotime('now');
//标准的字符串转换成时间
$t = '2012-9-10 15:18:06';
$time = strtotime($t);
//将时间转换成日期字符yyyymmdd,再转换成整型格式
$d = intval(date('Ymd',$time));
echo '付款时间:'.$d;
?php
header("Content-type: text/html; charset=utf-8");
$txDate = '2016-06-16';
$dateTime1 = strtotime($txDate); //int 1466028000 将英文文本日期时间解析为 Unix 时间戳:
$dateTime2= date("Y-m-d H:i:s",$dateTime1); //string '2016-06-16 00:00:00'
(length=19) Date() 函数把时间戳格式化为更易读的日期和时间。
//拼接今日最后时间2016-06-16 23:59:59
$dateTime= date("Y-m-d H:i:s",strtotime(date("Y-m-d",strtotime($dateTime2))."+ 23 hours 59 minutes 59 seconds ")); //string '2016-06-16 23:59:59' (length=19)
$sql = select * form `vvt_user` where userid = 100 AND date_time = $dateTime2 AND date_time = $dateTime;?
函数名: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();