zoukankan      html  css  js  c++  java
  • php时间戳与日期转换

    日期转换为时间戳

    PHP 提供了函数可以方便的将各种形式的日期转换为时间戳,该类函数主要是:

    • strtotime():将任何英文文本的日期时间描述解析为时间戳。
    • mktime():从日期取得时间戳。

    strtotime()

    strtotime() 函数用于将英文文本字符串表示的日期转换为时间戳,为 date() 的反函数,成功返回时间戳,否则返回 FALSE 。

    语法:

    int strtotime ( string time [, int now] )
    

    参数 time 为被解析的字符串,是根据 GNU 日期输入格式表示的日期。

    例子:

    <?php
    echo strtotime("2009-10-21 16:00:10");	//输出 1256112010
    echo strtotime("10 September 2008");	//输出 1220976000
    echo strtotime("+1 day"), "<br />";	//输出明天此时的时间戳
    ?>
    

    mktime()

    mktime() 函数用于从日期取得时间戳,成功返回时间戳,否则返回 FALSE 。

    语法:

    int mktime(时, 分, 秒, 月, 日, 年)
    

    例子:

    <?php
    echo mktime(21, 50, 55, 07, 14, 2010);		//输出“1279115455”
    ?>
    

    参数可以从右向左省略,任何省略的参数会被设置成本地日期和时间的当前值。

    mktime() 在做日期计算和验证方面很有用,它会自动计算超出范围的输入的正确值。例如下面例子输出的都是 2008-01-01:

    <?php
    echo date("Y-m-d", mktime(0, 0, 0, 12, 32, 2007));
    echo date("Y-m-d", mktime(0, 0, 0, 13, 1, 2007));
    ?>
    

    下个月的最后一天:

    任何给定月份的最后一天都可以被表示为下个月的第 "0" 天,而不是 -1 天,如下面的例子:

    <?php
    $lastday = mktime(0, 0, 0, 3, 0, 2008);
    echo strftime("2008年最后一天是:%d", $lastday);
    ?>
    

    浏览器输出:

    2008年最后一天是:29


    便于比较,使用date将当时间戳与指定时间戳转换成系统时间

    (1)打印明天此时的时间戳strtotime(”+1 day”)

    当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25

    指定时间:echo date(”Y-m-d H:i:s”,strtotime(”+1 day”)) 结果:2009-01-2309:40:25

    (2)打印昨天此时的时间戳strtotime(”-1 day”)

    当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25

    指定时间:echo date(”Y-m-d H:i:s”,strtotime(”-1 day”)) 结果:2009-01-2109:40:25

    (3)打印下个星期此时的时间戳strtotime(”+1 week”)

    当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25

    指定时间:echo date(”Y-m-d H:i:s”,strtotime(”+1 week”)) 结果:2009-01-2909:40:25

    (4)打印上个星期此时的时间戳strtotime(”-1 week”)

    当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25

    指定时间:echo date(”Y-m-d H:i:s”,strtotime(”-1 week”)) 结果:2009-01-1509:40:25

    (5)打印指定下星期几的时间戳strtotime(”next Thursday”)

    当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25

    指定时间:echo date(”Y-m-d H:i:s”,strtotime(”next Thursday”))结果:2009-01-29 00:00:00

    (6)打印指定上星期几的时间戳strtotime(”last Thursday”)

    当前时间:echo date(”Y-m-d H:i:s”,time()) 结果:2009-01-22 09:40:25

    指定时间:echo date(”Y-m-d H:i:s”,strtotime(”last Thursday”))结果:2009-01-15 00:00:00
    以上PHP时间戳函数示例可知,strtotime能将任何英文文本的日期时间描述解析为Unix时间戳,我们结合mktime()或date()格式化日期时间获取指定的时间戳,实现所需要的日期时间。

    示例:

    <?php
     

     
     
     
    //时间戳转日期
    $date_time_array = getdate(1297845628);//1311177600  1316865566
    $hours = $date_time_array["hours"];
    $minutes = $date_time_array["minutes"];
    $seconds = $date_time_array["seconds"];
    $month = $date_time_array["mon"];
    $day = $date_time_array["mday"];
    $year = $date_time_array["year"];
     
    echo"year:$year month:$month day:$day hour:$hours minutes:$minutes seconds:$seconds ";
     
    //正常日期转时间戳
    echo mktime(0, 0, 0, 9, 18, 2011) . " ";
    echo mktime(0, 0, 0, 9, 25, 2011) . " ";
     

    //把正常日期转成时间戳了,这里如果有时分秒也是同理,

    $year=((int)substr("2008-12-04",0,4));//取得年份

    $month=((int)substr("2008-12-04",5,2));//取得月份

    $day=((int)substr("2008-12-04",8,2));//取得几号

    echo mktime(0,0,0,$month,$day,$year);
     

    ?>




     

    时间戳转换为日期

    echo "time()显示年月日时分秒:" . date("Y-m-d H:i:s", time()) . " ";
    //这样连时,分秒一起显示
    echo "time()只显示年月日:" . date("Y-m-d ", time()) . " ";//只年示年月日
     
    echo "时间戳格式化:" . date("Y-m-d H:i:s", 1297845628) . " ";//直接使用时间戳

    Y :年(四位数)大写 
    m : 月(两位数,首位不足补0) 小写 
    d :日(两位数,首位不足补0) 小写 
    H:小时 带有首位零的 24 小时小时格式 
    h :小时 带有首位零的 12 小时小时格式 
    i :带有首位零的分钟 
    s :带有首位零的秒(00 -59) 
    a:小写的午前和午后(am 或 pm)

  • 相关阅读:
    Java学习笔记之——break 和continue
    Java学习笔记之——循环语句
    Java学习笔记之——switch-case条件结构
    Java学习笔记之——if条件语句和三目运算符
    Java学习笔记之——变量与数据类型、运算符
    supervisor-program配置
    应用节点使用管理节点做代理访问互联网的方法
    运营商-技术问题汇总
    galera cluster,mysql配置wsrep_notify_cmd参数,增加邮件告警
    while循环中出现ssh导致读取文件错误
  • 原文地址:https://www.cnblogs.com/Im-Victor/p/9438512.html
Copyright © 2011-2022 走看看