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

    PHP时间大的来分有两种,一是时间戳类型(1228348800),二是正常日期格式(2008-12-4)

    所以存到数据库也有两种形式了(真正不止,我的应用就两种),时间戳类型我是保存为字符串的,这个是比较方便的.

    正常日期类型是保存为DATE型的.

    这两个要注意一下,我平时用两种,所以,前几天建的表,把时间类型存为DATE的,我还一直用时间戳保存,一直资料写不进表,调试了好久的才知错误之处,是类型不符合,不给写入库.

    像上面的时间戳是比较方便,但,显示的时候,不至于把这个1228348800串给客户看吧,GOD NOWS!

    所 以就用到了这两个的转换,先说一下如何取得当前的时间戳,$date1=time();这样就取得当前的时间戳了,要转回2008-12-4这种格式呢, 用到date()这个函数了,在PHP中date()函数比较常用,如取得当前日期,可以用$date2=date('Y-m-d');,关于里面参数的 意思,如不懂就查一下php的手册了.

    好,言归正传,把1228348800转成2008-12-4格式代码如下:

    $date3=date('Y-m-d H:i:s',"1228348800");

    这样就OK了,如还想得到小时,分钟秒,只要把'Y-m-d'改一下就可以了,不过要注意一下,PHP时间还像有8个小时的误差.加上就OK了.

    时间戳转正常日期有了,反之呢,把正常日期格式转为时间戳呢,请看如下代码:

    $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);

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

    注意:php5.1以上时间戳会与实际时间相差8小时,解决办法如下
    1、最简单的方法就是不要用php5.1以上的版本--显然这是不可取的方法!!!

    2、修改php.ini。打开php.ini查找date.timezone 去掉前面的分号= 后面加Asia/Shanghai,重启apache服务器即可--缺点就是如果程序
    放到别人的服务器上,不能修改php.ini,那就奈何不得了。

    3、在程序中添加时间的初始化的语句的 即:“date_default_timezone_set("Asia/Shanghai"); ”这个可以由程序员任意设置,我的推
    荐。
    时区标识符,大陆内地可用的值是:PRC,Asia/Chongqing ,Asia/Shanghai ,Asia/Urumqi (依次为中国,重庆,上海,乌鲁木齐) ,Etc/GMT-8,Asia/Harbin
    港台地区可用:Asia/Macao ,Asia/Hong_Kong ,Asia/Taipei (依次为澳门,香港,台北)
    还有新加坡:Asia/Singapore

    这样就可以实现输出的是北京时间了

  • 相关阅读:
    POJ3320 Jessica's Reading Problem
    POJ3320 Jessica's Reading Problem
    CodeForces 813B The Golden Age
    CodeForces 813B The Golden Age
    An impassioned circulation of affection CodeForces
    An impassioned circulation of affection CodeForces
    Codeforces Round #444 (Div. 2) B. Cubes for Masha
    2013=7=21 进制转换
    2013=7=15
    2013=7=14
  • 原文地址:https://www.cnblogs.com/caster/p/3938806.html
Copyright © 2011-2022 走看看