1. 程式人生 > >php自定義函式及內部函式----時間日期函式

php自定義函式及內部函式----時間日期函式

時間戳: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,使得兩者一致。