• PHP时间和日期


    1、unix时间戳

    起始时间1970年1月1日至今走过的秒数

    time():返回当前时间戳(秒)ps:java getTime()返回的是毫秒

    microtime(); //- 返回微秒数 当前 Unix时间戳,(1s=1000ms,1 ms=1000μs),它的结果是字符串,分两部分,前半部分是微秒(但是单位是秒),后半部分是秒。

    返回字符串格式示例:0.80238600 1550278914

    应用:使用microtime函数获取毫秒

    function msectime(){
        list($msec, $sec) = explode(' ', microtime());
        return (float)sprintf('%.0f', (floatval($msec) + floatval($sec)) * 1000);
    }

    计算页面的运行时间

    function run_time(){
        list($msec, $sec) = explode(" ", microtime());
        return ((float)$msec + (float)$sec);
    }
    $start_time = run_time();
    $end_time = run_time();
    echo '该示例的运行时间为'.($end_time - $start_time).'秒';

    getdate — 取得日期/时间信息:array getdate ([ int $timestamp = time() ] )

    返回一个根据 timestamp 得出的包含有日期信息的关联数组 array。如果没有给出时间戳则认为是当前本地时间。 

    $arr = getdate();//使用getdate()函数将当前信息保存
    print_r($arr);
    echo $arr['year']."-".$arr['mon']."-".$arr['mday']." ";//返回当前的日期信息
    echo $arr['hours'].":".$arr['minutes'].":".$arr['seconds']." ".$arr['weekday'];//返回当前的时间信息
    echo "<p>Today is the $arr[yday]th of year";//输出今天是一年中的第几天

    2、php时区

    获取服务器时区date_default_timezone_get();

    设置服务器时区

    如果从代码返回的不是正确的时间,有可能是因为服务器位于其他国家或者被设置为不同时区。中国时区可设置为"Asia/Shanghai"或"PRC"

    方法1、配置文件修改

    在php.ini里加上找到date.timezone项,设置date.timezone = "Asia/Shanghai",重启环境。

    方法2、在页面添加date_default_timezone_set("PRC");

    方法3、在页头加上设置时区ini_set('date.timezone','Asia/Shanghai');

    设置时区,时区设置不正确会抛出错误:It is not safe to rely on the system's timezone settings.

    3、格式化输出日期

    date函数用于获取格式化后的日期:string date ( string $format [, int $timestamp ] ),返回将整数 timestamp 按照给定的格式字串而产生的字符串。

    format :必须,规定时间戳的格式。timestamp :可选。规定时间戳。默认值是当前时间戳time()。

    常用格式化字符

    用于日期

    的字符

    表示年(四位数)
    m/n 01-12月/1-12月
    d/j 01-31天/1-31天
    w 月里的某周0-6|
    表示周里的某天
    t 某月天数
    L 是否闰年

    用于时间

    的字符

    H/h 00-24时/00-12时
    i 00-59分
    s 00-59秒
    A/a AM或PM/am或pm
    其他字符 "/"、 "." 、 "-" 、":"等 插入字符中,以增加其他格式。

    闰年定义:

    a.能被4整除且不被100整除
    b.若能被100整除,则同时要被400整除

    // 用三种不同方法格式今天的日期
    echo '今天是 ' . date('Y/m/d') .'<br>';
    echo '今天是 ' . date('Y.m.d') .'<br>';
    echo '今天是 ' . date('Y-m-d') .'<br>';
    echo '今天是 ' . date('l').'<br>';
    echo '现在时间是 ' . date('h:i:sa').'<br>';
    echo '完整的日期和时间是 '.date('Y-m-d h:i:sa').'<br>';
    echo date("l Y-m-d H:i:s T"); //除了时间,再输出星期及所在时区

    小应用:自动更新版权年份© 2010-<?php echo date("Y")?>

    使用预定义常量输出不同格式的时间和日期 

    echo "<p>DATE_ATOM = ".date(DATE_ATOM);    
    echo "<p>DATE_COOKIE = ".date(DATE_COOKIE);
    echo "<p>DATE_ISO8601 = ".date(DATE_ISO8601);
    echo "<p>DATE_RFC822 = ".date(DATE_RFC822);
    echo "<p>DATE_RFC850 = ".date(DATE_RFC850);
    echo "<p>DATE_RSS = ".date(DATE_RSS);
    echo "<p>DATE_W3C = ".date(DATE_W3C)."<p>";

    4、自定义日期

    使用mktime函数可以返回指定时间的时间戳:mktime(hour,minute,second,month,day,year) 

    $d=mktime(15, 23, 30, 2, 16, 2019);
    echo "创建日期是 " . date("Y-m-d h:i:sa", $d). "<br>";//创建日期是 2019-02-16 03:23:30pm

    strtotime() 把日期字符串转成时间戳,用于把人类可读的字符串转换为 Unix 时间。

    $d=strtotime("now");
    $d=strtotime("3:38pm April 15 2018");
    echo date("Y-m-d h:i:sa", $d);
    $d=strtotime("tomorrow"); //明天
    $d=strtotime("next Saturday"); //下周六
    $d=strtotime("next Week");//下周
    $d=strtotime ("last Monday");//上周一$d=strtotime("+3 Months"); //三个小时后

    输出下6个周六的日期:

    $startdate = strtotime("Saturday");
    $enddate = strtotime("+6 weeks",$startdate);
    while ($startdate < $enddate) {
        echo date("M d", $startdate),"<br>";
        $startdate = strtotime("+1 week", $startdate);
    }

    输出12月31日之前的天数:

    $d1=strtotime("December 31");
    $d2=ceil(($d1-time())/60/60/24);
    echo "距离十二月三十一日还有:" . $d2 ." 天。";

    5、验证日期存在性

    使用checkdate()函数验证日期

    $year = 2008;
    $month = 2;
    $day1 = 29;
    $day2 = 30;
    var_dump(checkdate($month,$day1,$year));
    var_dump(checkdate($month,$day2,$year));
  • 相关阅读:
    旋转卡壳(1)求凸包(点集)直径 poj 2187
    求解平面最近点对的问题
    java中的内部类初识
    java中的多重继承
    ObjectiveC中的Protocols
    Mac中配置java的src.jar
    Mac OS X Lion无线网络问题
    Xcode中修改默认文件头部注释
    全文索引查询和like查询对比
    获取Repeater选中行索引
  • 原文地址:https://www.cnblogs.com/chuanzi/p/10386889.html
Copyright © 2020-2023  润新知