zoukankan      html  css  js  c++  java
  • 获取明天凌晨的时间戳

    在一些业务逻辑中,需要在今天获取明天凌晨的时间戳。在网上找了一下别人的写法是这样的

    echo strtotime(date('Y-m-d',strtotime('+1 day')));

    这样的写法是比较保守的做法,阅读起来是先将今天时间戳加一天,然后取年月日,然后转时间戳。

    我提出了一种稍微改进的做法

    echo strtotime(date("Y-m-d"))+86400;

    这样能少调用一次函数实现加一天,毕竟一天的常规情况下是有86400秒的。tips:我记得有一次出现了一分钟61秒的情况 这种情况应该可以忽略。

    补充:

    世界上有两种时间计量系统:基于地球自转得出的“世界时”和基于原子振荡周期确定的“原子时”。由于两种时间尺度对秒的测量方法不同,随着时间推移,两个时间系统间会出现差异,因此有了“协调世界时”的概念。

    “协调世界时”以“原子时”秒长为基础,在时刻上尽量接近“世界时”。1972年,国际计量大会决定,当“世界时”与“原子时”的时刻相差达到0.9秒时,就在“协调世界时”上加上或减去1秒(正闰秒或负闰秒),以尽量接近“世界时”,这就是闰秒。

    中国天文学会会员、天津市天文学会理事史志成表示,闰秒一般安排在年中或年末的最后时刻,即6月30日或12月31日的最后一分钟。从1972年到这次的44年间,已经有27次闰秒。最近一次是2015年6月30日。增加闰秒的决定通常提前6个月宣布。

    出自 http://www.oushinet.com/international/guojinews/20161231/251172.html

    言归正传,我发现我们总是必须要获取年月日Ymd的格式才能取到凌晨,那么如何不调用date函数获取凌晨呢?

    这里我想到了余数概念,当时间戳对86400取余的时候不就能得到今天过了多少秒了吗?只要减掉这个时间,再加上一天,就可以获取明天凌晨时间了(东八区还需要减8个小时)

    代码如下

    $now=time();

    echo $now-$now%86400+86400-8*3600;//东八区需要减八小时

    下面是代码的执行效率对比

    网上提供的方式

    执行时间

    我提出的方式

    执行时间

     余数改进方式

     

    执行时间

    如此看来,尽量避免函数的调用是能够提升效率的一个可以尝试的手段 

  • 相关阅读:
    dbt macro 说明
    构建一个dbt 数据库适配器
    dbt 包的构建
    dbt 生产环境使用
    来自官方的一些dbt 最佳实践
    knowledge-repo 知识管理简单试用
    dbt 包管理
    dbt 的知识文档管理
    knowledge 开源知识管理系统
    hasura graphql server 集成gitlab
  • 原文地址:https://www.cnblogs.com/lizhaoyao/p/6912100.html
Copyright © 2011-2022 走看看