所在位置:首页 > 学习心得 > 利用PHP时间戳获取当前时间
利用PHP时间戳获取当前时间
  • 利用PHP时间戳获取当前时间
    发布时间:2011-01-09 类别:PHP技术 来源:侠客工作室
    • 1
    • 2
    • 3
    • 4
    • 5
  • 大家对PHP时间戳也许还是比较陌生,今天我们就以一个实例来具体讲解PHP时间戳的使用方式,和应用PHP时间戳会给我们带来哪些实际好处。

    我们一定会碰到这样的情况:银行A与银行B几乎同时打开你的账户并看到你的账户上原有1000元存款,然后两家银行都想在你的账户上加上500元存款。那么,银行A便将1000元改成1500元,同时,银行B也将1000元改成了1500元。这样就糟糕了!最后,你的银行账户上最后只有1500元而不是理应的2000元,等于白白损失了500元!这就是在没有锁定数据的情况下修改造成的严重问题。然而,我们可以通过PHP时间戳来巧妙解决这个问题。
    我们来看思路:

    在银行account表中建立PHP时间戳字段timestamp,设定为文本类型varchar。

    当银行A读取account表中的存款字段时,同时也读取时间戳字段,比如123456。

    当银行A修改完存款数值后,进行存盘操作时,将先前读取的时间戳123456与当时表中的PHP时间戳进行一次对比,如果一致,那么允许存盘,然后生成一个新的时间戳比如456789替换表中原有的时间戳123456。

    这样做会带来什么好处呢。

    我们再来看一开始的那个情况:银行A与银行B几乎同时打开你的账户并看到你的账户上原有1000元存款,与此同时两个银行业同时读取了时间戳123456,接下来就有区别了,当银行A把1000元改成1500元后,存盘,系统将对比先前的时间戳123456是否与存盘时表中的时间戳一致,显然,现在应该是一致的,那么允许存盘,并生成新的时间戳456789替换了旧的时间戳123456。接下去,B银行也将1000元修改成了1500元,存盘,系统对比先前的时间戳123456是否与存盘时表中的时间戳一致,发现先前的时间戳123456已经与现在的时间戳456789相异,系统拒绝存盘,要求刷新数据,那么数据刷新之后1000元已经因为之前A银行存入了500元而成为了1500元,那么B银行就会在1500元的基础上改为2000元,再次存盘,系统允许。这样,我们就避免了重复修改数据所带来的错误!

    有些像绕口令,希望大家已经明白我的意思~

    最后,让我们看看PHP时间戳的一些操作代码。

    获得时间戳

    <?php   $timetimestamp=time();   echo $timestamp;   ?>   更新timestamp的SQL的语句:

    update 表名 set 字段名=$timestamp where 条件=值;


    大家也许对PHP时间戳已经有所了解,那么我们如何应用它来获取具体的日期呢?我们今天来为大家介绍一下PHP时间戳获取当前时期的具体方式。

    实现功能:获取某个日期的时间戳,或获取某个时间的PHP时间戳。

    strtotime能将任何英文文本的日期时间描述解析为Unix时间戳,我们结合mktime()或date()格式化日期时间获取指定的时间戳,实现所需要的日期时间。

    strtotime 将任何英文文本的日期时间描述解析为Unix时间戳[将系统时间转化成unix时间戳]

    一,获取指定日期的unix时间戳 strtotime(”2009-1-22″) 示例如下:
    echo strtotime(”2009-1-22“) 结果:1232553600
    说明:返回2009年1月22日0点0分0秒时间戳

    二,获取英文文本日期时间 示例如下:
    便于比较,使用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-23 09:40:25

    (2)打印昨天此时的PHP时间戳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-21 09: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-29 09: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-15 09:40:25

    (5)打印指定下星期几的PHP时间戳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

    以上示例可知,strtotime能将任何英文文本的日期时间描述解析为Unix时间戳,我们结合mktime()或date()格式化日期时间获取指定的PHP时间戳,实现所需要的日期时间。

  • ☆☆☆技术交流群:5684178☆☆☆
  • 上一篇:php验证电子邮件格式函数
  • 下一篇:PHP中运算符与运算符的优先级
侠客工作室主要承揽网站制作|企业建站|北京网站制作|北京网站建设|北京企业建站|专业仿站|SEO优化等业务
地址:北京市海定区清河水木天成 电话:13718388147 13718388147 传真:13718388147 访问统计:
投诉电话:13718388147 投诉QQ:点击这里给我发消息 客服信箱:1300105556@qq.com 邮编:102200 北京网站建设地图 北京网站建设RSS地图
版权所有 2009-2014侠客工作室【北京网站建设】 京ICP备11021494号-1