php自定義函式及內部函式----時間日期函式
阿新 • • 發佈:2018-12-05
時間戳:UNIX時間戳是儲存日期和時間的一種緊湊簡潔的方法,是大多數UNIX系統中儲存當前日期和時間的一種方法,也是在大多數計算機語言中表示日期和時間的一種標準格式。UNIX時間戳是從1970年1月1日0點(UTC/GMT的午夜)開始起到當前時間所經過的秒數。
(1)date() 函式
該函式將時間戳格式化為更易讀的日期和時間。
語法:date( string $format [, int $timestamp ] );$timestamp是可選的,預設是time()。
echo "今天是 " . date("Y/m/d") . "<br>"; // 輸出:今天是 2018/12/05 echo"今天是 " . date("Y.m.d") . "<br>"; // 輸出:今天是 2018.12.05 echo "今天是 " . date("Y-m-d") . "<br>"; // 輸出:今天是 2018-12-05 echo "今天是 " . date("l") . "<br>"; // 輸出:今天是 Wednesday echo date("Y-m-d",1544009310); //輸出: 2018-12-05
(2)time()
該函式返回當前的時間戳。
echo "當前時間為:".date("Y-m-d H:i:s A")."<br>";//輸出:當前時間為:2018-12-05 11:37:20 AM echo "當前時間的時間戳為:".time()."<br>"; // 輸出:當前時間的時間戳為:1544010043 echo "一天之後的時間為:".date("Y-m-d H:i:s A", time()+24*60*60)."<br>";
// 輸出:一天之後的時間為:2018-12-06 11:37:20 AM echo "一週之後的時間為:".date("Y-m-d H:i:s A", time()+7*24*60*60)."<br>";
// 輸出:一週之後的時間為:2018-12-12 11:37:20 AM echo "30天之後的時間為:".date("Y-m-d H:i:s A", time()+30*24*60*60)."<br>";
// 輸出:30天之後的時間為:2019-01-04 11:37:20 AM
(3)maketime()
建立時間的Unix時間戳。
mktime(hour,minute,second,month,day,year)
$d=mktime(9, 12, 31, 6, 10, 2015); echo "建立日期是 " . date("Y-m-d h:i:sa", $d); //輸出:建立日期是 2015-06-10 09:12:31am
(4)strtotime()
用字串來建立日期。
$d=strtotime("10:38pm December 15 2018"); echo "建立日期的時間戳是 " .$d; //輸出:建立日期的時間戳是 1544913480 echo "建立日期是 " . date("Y-m-d h:i:sa", $d) . "<br>"; //輸出:建立日期是 2018-12-15 10:38:00pm $d=strtotime("tomorrow"); echo date("Y-m-d h:i:s", $d) . "<br>"; //輸出:2018-12-06 12:00:00 $d=strtotime("next Saturday"); echo date("Y-m-d h:i:sa", $d) . "<br>";//輸出:2018-12-08 12:00:00am $d=strtotime("+3 Months"); echo date("Y-m-d h:i:sa", $d) . "<br>";//輸出:2019-03-05 11:52:55am
在實際的專案開發中也會經常用到時間日期函式。
比如我在做專案的時候,會用到選擇時間的日曆外掛 laydate.js 。使用者可以直接選擇時間,生成的時間返回給後臺,格式是提前就可以規定好的。
<div class="form-group"> <label for="inputEmail3" class="control-label">開始時間</label> <div class="control-counten"> <input type="text" class="form-control width200" name="starttime" id="starttime" /> <script type="text/javascript" src="../static/laydate/laydate.js"></script> <script type="text/javascript"> laydate.skin("molv");//設定面板 var start = { elem: '#starttime', format: 'YYYY-MM-DD ', min: '2018-06-16 23:59:59', //設定最小日期為當前日期 max: '2099-06-16 23:59:59', //最大日期 istime: true, istoday: false, choose: function(datas){ end.min = datas; //開始日選好後,重置結束日的最小日期 end.start = datas; //將結束日的初始值設定為開始日 } }; laydate(start); var end = { elem: '#stoptime', format: 'YYYY-MM-DD ', min: '2018-06-16 23:59:59', //設定最小日期為當前日期 max: '2099-06-16 23:59:59', //最大日期 istime: true, istoday: false, choose: function(datas){ start.max = datas; //結束日選好後,重置開始日的最大日期 } }; laydate(end); </script> </div> </div>
可以看出這裡用的格式是 format: 'YYYY-MM-DD ',最後生成的日期也是形如2018-12-05 這樣的形式。我們將生成的這個時間通過 strtotime() 函式轉換為時間戳存到資料庫當中。此時,資料庫的時間是精確到秒級別,即一共十位數字。但是,在使用時間js外掛時,我們會通過 下面的形式將格式化日期轉化為時間戳,但是這裡是精確到毫秒級,即13位。
var timestamp = (new Date(starttime.replace(/-/g, '/'))).valueOf(); //13位數字,精確到毫秒
此時,要麼將資料庫中的時間乘以1000,要麼將js轉化的時間除以1000,使得兩者一致。