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,使得两者一致。

 

猜你喜欢

转载自www.cnblogs.com/xlzfdddd/p/10073112.html