1. 程式人生 > >PHP對時間戳的處理

PHP對時間戳的處理

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值的最大值範圍。