• <small id='2KKbO'></small><noframes id='2KKbO'>

  • <tfoot id='2KKbO'></tfoot>

      1. <i id='2KKbO'><tr id='2KKbO'><dt id='2KKbO'><q id='2KKbO'><span id='2KKbO'><b id='2KKbO'><form id='2KKbO'><ins id='2KKbO'></ins><ul id='2KKbO'></ul><sub id='2KKbO'></sub></form><legend id='2KKbO'></legend><bdo id='2KKbO'><pre id='2KKbO'><center id='2KKbO'></center></pre></bdo></b><th id='2KKbO'></th></span></q></dt></tr></i><div id='2KKbO'><tfoot id='2KKbO'></tfoot><dl id='2KKbO'><fieldset id='2KKbO'></fieldset></dl></div>
        <legend id='2KKbO'><style id='2KKbO'><dir id='2KKbO'><q id='2KKbO'></q></dir></style></legend>
        • <bdo id='2KKbO'></bdo><ul id='2KKbO'></ul>

        PHP:从时间戳产生相对日期/时间

        时间:2024-04-13
        <legend id='LbAz0'><style id='LbAz0'><dir id='LbAz0'><q id='LbAz0'></q></dir></style></legend>

        <small id='LbAz0'></small><noframes id='LbAz0'>

            <bdo id='LbAz0'></bdo><ul id='LbAz0'></ul>
                <i id='LbAz0'><tr id='LbAz0'><dt id='LbAz0'><q id='LbAz0'><span id='LbAz0'><b id='LbAz0'><form id='LbAz0'><ins id='LbAz0'></ins><ul id='LbAz0'></ul><sub id='LbAz0'></sub></form><legend id='LbAz0'></legend><bdo id='LbAz0'><pre id='LbAz0'><center id='LbAz0'></center></pre></bdo></b><th id='LbAz0'></th></span></q></dt></tr></i><div id='LbAz0'><tfoot id='LbAz0'></tfoot><dl id='LbAz0'><fieldset id='LbAz0'></fieldset></dl></div>

                  <tbody id='LbAz0'></tbody>
                • <tfoot id='LbAz0'></tfoot>
                  本文介绍了PHP:从时间戳产生相对日期/时间的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我基本上是在尝试将 Unix 时间戳(time() 函数)转换为与过去和未来日期兼容的相对日期/时间.所以输出可能是:

                  I'm basically trying to convert a Unix timestamp (the time() function) to a relative date/time that's both compatible with past and future date. So outputs could be:

                  2 周前

                  1 小时 60 分钟前

                  1 hour and 60 minutes ago

                  15 分 54 秒前

                  10 分 15 秒后

                  首先我尝试编写此代码,但创建了一个无法维护的巨大功能,然后我在互联网上搜索了几个小时,但我只能找到只产生一部分时间的脚本(嗯:"1小时前"没有分钟).

                  First I tried to code this, but made a huge unmaintainable function, and then I searched the internet for a couple of hours, yet all I can find are scripts that produce only one part of the time (e.h: "1 hour ago" without the minutes).

                  你有一个已经这样做的脚本吗?

                  Do you have a script that already does this?

                  推荐答案

                  此函数为您提供1 小时前"或明天"之类的现在"和特定时间戳"之间的结果.

                  This function gives you "1 hour ago" or "Tomorrow" like results between 'now' and 'specific timestamp'.

                  function time2str($ts)
                  {
                      if(!ctype_digit($ts))
                          $ts = strtotime($ts);
                  
                      $diff = time() - $ts;
                      if($diff == 0)
                          return 'now';
                      elseif($diff > 0)
                      {
                          $day_diff = floor($diff / 86400);
                          if($day_diff == 0)
                          {
                              if($diff < 60) return 'just now';
                              if($diff < 120) return '1 minute ago';
                              if($diff < 3600) return floor($diff / 60) . ' minutes ago';
                              if($diff < 7200) return '1 hour ago';
                              if($diff < 86400) return floor($diff / 3600) . ' hours ago';
                          }
                          if($day_diff == 1) return 'Yesterday';
                          if($day_diff < 7) return $day_diff . ' days ago';
                          if($day_diff < 31) return ceil($day_diff / 7) . ' weeks ago';
                          if($day_diff < 60) return 'last month';
                          return date('F Y', $ts);
                      }
                      else
                      {
                          $diff = abs($diff);
                          $day_diff = floor($diff / 86400);
                          if($day_diff == 0)
                          {
                              if($diff < 120) return 'in a minute';
                              if($diff < 3600) return 'in ' . floor($diff / 60) . ' minutes';
                              if($diff < 7200) return 'in an hour';
                              if($diff < 86400) return 'in ' . floor($diff / 3600) . ' hours';
                          }
                          if($day_diff == 1) return 'Tomorrow';
                          if($day_diff < 4) return date('l', $ts);
                          if($day_diff < 7 + (7 - date('w'))) return 'next week';
                          if(ceil($day_diff / 7) < 4) return 'in ' . ceil($day_diff / 7) . ' weeks';
                          if(date('n', $ts) == date('n') + 1) return 'next month';
                          return date('F Y', $ts);
                      }
                  }
                  

                  这篇关于PHP:从时间戳产生相对日期/时间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:PHP如何查找自日期时间以来经过的时间? 下一篇:MySQL datetime 字段和夏时制时间——我如何引用“额外的"?小时?

                  相关文章

                • <legend id='6xo4J'><style id='6xo4J'><dir id='6xo4J'><q id='6xo4J'></q></dir></style></legend>

                  <i id='6xo4J'><tr id='6xo4J'><dt id='6xo4J'><q id='6xo4J'><span id='6xo4J'><b id='6xo4J'><form id='6xo4J'><ins id='6xo4J'></ins><ul id='6xo4J'></ul><sub id='6xo4J'></sub></form><legend id='6xo4J'></legend><bdo id='6xo4J'><pre id='6xo4J'><center id='6xo4J'></center></pre></bdo></b><th id='6xo4J'></th></span></q></dt></tr></i><div id='6xo4J'><tfoot id='6xo4J'></tfoot><dl id='6xo4J'><fieldset id='6xo4J'></fieldset></dl></div>
                • <small id='6xo4J'></small><noframes id='6xo4J'>

                  1. <tfoot id='6xo4J'></tfoot>
                      <bdo id='6xo4J'></bdo><ul id='6xo4J'></ul>