【问题标题】:How to get current time elapsed percentage of today? [duplicate]如何获得今天的当前时间百分比? [复制]
【发布时间】:2012-06-08 20:55:36
【问题描述】:

我正在尝试获取当前已用时间占今天时间的百分比。它可以是 javascript 或 php。我该怎么做?

【问题讨论】:

  • $midnight = strtotime('00:00'); $epochseconds = gettimeofday(true); $timeofdayseconds = $epochseconds - $midnight; $timepercent = $timeofdayseconds/(60*60*24)*100;
  • 有时,我认为mattgemmell 有代理为他工作,他们提出的问题会将用户重定向到他的网站:)

标签: php javascript jquery


【解决方案1】:

使用Date 对象和一些算术。将当天的组成部分转换为等效单位(例如秒),找到它们的总和,然后除以该单位每天的数量。

例如,下面是 JavaScript 中的一个解决方案。

var d = new Date();
var pctDayElapsed = (d.getHours() * 3600 + d.getMinutes() * 60 + d.getSeconds() + d.getMilliseconds()/1000)/86400;

请注意,这种方法依赖于浏览器的本地化。您的结果将取决于浏览器的时区。

【讨论】:

  • 我无法正常工作。它必须在服务器上运行吗?
  • 抱歉,我在代码的毫秒部分有一个错字。现在,将代码复制并粘贴到浏览器控制台中应该没有问题了。
  • 是的,现在可以了。但是有一个问题,这里的当前时间是凌晨 1 点,但是代码给了我“0.04291961805555556”的百分比?
  • 是的,0.042 表示一天已经过去了 4.2%。这是准确的。
【解决方案2】:

我会使用当前时间来计算今天已经过去的秒数,然后将其除以 86400(一天中的秒数),当然再乘以 100 即可将其从小数转换为百分比。

【讨论】:

    【解决方案3】:

    这是 PHP 中的答案:

    $now=time();
    $today=strtotime(date("m/d/Y"));
    $seconds=$now-$today;
    $day=24*60*60;//seconds in a day;
    $percent=$seconds/$day*100;
    

    $hours=date('G')*60*60;
    $minutes=date('i')*60;
    $seconds=date('s');
    $day=24*60*60;//seconds in a day;
    $percent=($hours+$minutes+$seconds)/$day*100
    

    【讨论】:

      【解决方案4】:
      <?php
      $timestamp = time();
      $hours = intval(date("G", $timestamp));
      $minutes = intval(date("i", $timestamp));
      $seconds = intval(date("s", $timestamp));
      $proportion_elapsed = ($hours * 60 * 60 + $minutes * 60 + $seconds) /
          (24 * 60 * 60);
      printf("%0.4F of the day has elapsed.", $proportion_elapsed);
      ?>
      

      只要一天有 86,400 秒,此方法就有效,但由于夏令时或闰秒,这可能不正确。

      【讨论】:

        【解决方案5】:

        将当前时间除以 86400,然后将该整数值乘以 86400,四舍五入到一天的开始。然后取当前时间的差值(当然以秒为单位),然后除以 86400。最后,乘以 100。

        编辑:mod 工作效率更高

        伪代码:

        MidnightDays = (TimeInSeconds % 86400) * 86400;
        Percentage = (TimeInSeconds - MidnightDays) / 86400 * 100;
        

        【讨论】:

        • ...或者您可以只使用 mod 而不是 div-then-multiply-then-subtract。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-22
        • 2021-04-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多