【问题标题】:PHP - Accurate Unix Timestamp [closed]PHP - 准确的 Unix 时间戳
【发布时间】:2012-09-01 18:52:45
【问题描述】:

我正在尝试根据不同的时间段创建一个准确的 Unix 时间戳以分配给一个变量。知道如何计算这些时间戳周期吗?

【问题讨论】:

  • 一个“时间戳”将表示一个单一的时刻。当你说你想要一个“本月”的时间戳时,你想要一个当前月开始的时间戳(每月第一天的午夜),还是两个指示月份开始和结束边界的时间戳要不然是啥?请澄清。
  • @Celada,是的,时间戳是为了计算边界。所以它应该是当月的最开始。
  • 这里有很多很好的信息:php.net/manual/en/function.time.php

标签: php unix time filter timestamp


【解决方案1】:

我只能建议你阅读时间手册。

http://php.net/manual/en/function.time.php

今天到最后一个午夜 -> 获取小时 + 分钟,进行负 24:00 小时计算,使用 http://php.net/manual/en/function.abs.php 使您的值变为正数

其他的都可以用http://php.net/manual/en/function.strtotime.php解决

在最坏的情况下,将其转换为 unix 时间并获得差异,您将获得准确的输出,而无需关注闰年和您提到的其他时间条件,例如 2 月 28 日问题。

【讨论】:

    【解决方案2】:

    我可以说你不想这样做吗?存储常规的 Unix 时间戳——如果需要,可以转换为本地时间戳。

    当时区发生变化或有人改变夏令时时,数据会变得非常快、非常快。根据您需要数据的准确程度,闰秒(甚至闰分钟)是可能的。

    时间处理代码非常复杂且/非常/智能。

    • 存储实时时间戳。
    • 存储标志着该时期开始的时间戳。
    • 需要时减去。
    • 避免晦涩难懂的错误。

    【讨论】:

      【解决方案3】:

      我是 PHP 的 DateTime classes 的大力支持者。它们减轻了在处理时间时出现的许多挫败感。

      此示例说明了您可以如何使用它。

      <?php
      
      header('Content-type: text/plain');
      
      $today = new DateTime("today");
      echo 'Today: ' . $today->format('Y-m-d H:i:s') . "\n";
      echo 'Timestamp: ' . $today->getTimestamp() . "\n\n";
      
      $thisweek = new DateTime("this week");
      echo 'This Week: ' . $thisweek->format('Y-m-d') . "\n";
      echo 'Timestamp: ' . $thisweek->getTimestamp() . "\n\n";
      
      $thismonth = new DateTime("this month");
      echo 'This Month: ' . $thismonth->format('Y-m') . "\n";
      echo "Days this month: ", $thismonth->format('t') . "\n";
      echo 'Timestamp: ' . $thismonth->getTimestamp() . "\n\n";
      
      ?>
      

      您可以通过使用DateTimeZone 类来增强它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-24
        • 2019-09-02
        • 2013-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-08
        • 2012-03-10
        相关资源
        最近更新 更多