PHP对时间戳的处理

时间戳定义

时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总毫秒数。现在是一个10位数,随着时间推移,以后会是11位,12位。

php获取年月日,时间,时间戳,星期

php获取当前日期的年,月,日
echo date(“Y”);
echo date(“m”);
echo date(“d”);
本月共有多少天
echo date(“t”);

明天此时的时间戳
echo strtotime("+1 day")

当前时间:
echo date(“Y-m-d H:i:s”,time())

明天此时的时间:
echo date(“Y-m-d H:i:s”,strtotime("+1 day"))

昨天此时的时间戳:
echo strtotime("-1 day")

昨天此时时间:
echo date(“Y-m-d H:i:s”,strtotime("-1 day"))

下个星期此时的时间戳:
echo strtotime("+1 week")

下个星期此时的时间:
echo date(“Y-m-d H:i:s”,strtotime("+1 week"))

上个星期此时的时间戳:
echo strtotime("-1 week")

上个星期此时的时间:
echo date(“Y-m-d H:i:s”,strtotime("-1 week"))

下星期几的时间戳:
echo strtotime(“next Thursday”)

下星期几的时间:
echo date(“Y-m-d H:i:s”,strtotime(“next Thursday”))

上星期几的时间戳:
echo strtotime(“last Thursday”)

上星期几的时间:
echo date(“Y-m-d H:i:s”,strtotime(“last Thursday”))

时间戳装换

$time = 1540197053;

//转换为日期2018-10-22
$timea = date(“Y-m-d”, $time);

//转换为日期时间2018-10-22 16:30:53
$timeb = date(“Y-m-d H:i:s”, $time);

//转换为当前月份的第一天日期2018-10-01
$BeginDate = date(“Y-m-01”, $time);

//转换为当前月份的最后一天日期2018-10-31
$EndDate_one = date(“Y-m-d”, strtotime(" $BeginDate +1 month -1 day"));

//转换为当前月份后三个月的最后一天日期2018-01-31
$EndDate_three = date(“Y-m-d”, strtotime(" $BeginDate +4 month -1 day"));

//一年后今天
$date = date(‘Y’, $time) + 1 . ‘-’ . date(‘m-d H:i:s’);

mysql数据库设计

MySQL数据库常用的时间类型有timestamp和datetime,两者主要区别是占用存储空间长度不一致、可存储的时间也有限制,但针对不同版本下,timestamp字段类型的设置需要慎重,因为不注意的可能会被“坑死”。

一、TIMESTAMP和DATETIME字段类型对比

字段类型--------存储长度-------------------时间范围
timestamp------4字节-----------------------‘1970-01-01 00:00:01’ UTC to ‘2038-01-19 03:14:07’ UTC
datetime--------8字节(5.7占5字节)-------‘1000-01-01 00:00:00’ to ‘9999-12-31 23:59:59’

二、数据存储类型date datetime datestamp

date 表示年月日,如YY-MM-DD
datetime 表示年月日和时间信息,如YY-MM-DD HH:MM:SS
datestamp 和datetime表示的信息相同,但时间范围不同
时间范围
date – > ‘1000-01-01’ to ‘9999-12-31’.
datetime –> ‘1000-01-01 00:00:00’ to ‘9999-12-31 23:59:59’.
datestamp – > ‘1970-01-01 00:00:01’ UTC to ‘2038-01-19 03:14:07’ UTC

三、数据库存时间戳的好处和坏处

优点:

1、无时区干扰(时间戳不含时区,绝对时间,存的是标准时不受服务器所在时区的影响)
2、存储空间小一个数字比一个字符串占用空间小得多
3、检索效率高(数据量大的时候如果需要以该字段作为查询条件的时候查询速度会快一点)
4、计算出需要检索的时间戳,然后比较。如果存的是字符串,根本无法比较。

缺点:

查询结果不直观,需要二次处理。不过这个几乎可以忽略,如果是在客户端用sql查询的时候,mysql自带了UNIX_TIMESTAMP 和FROM_UNIXTIME 的转换函数;如果是程序处理的话,把时间戳转换成日期对象并不是什么特别麻烦的事情。

注意:如果用int来存储时间戳的话,请注意int值的最大值范围。

猜你喜欢

转载自blog.csdn.net/weixin_43687896/article/details/84302723
今日推荐