【问题标题】:FlipClock - Use servertime instead of clienttimeFlipClock - 使用服务器时间而不是客户端时间
【发布时间】:2016-01-25 12:41:51
【问题描述】:

我正在尝试在 7 个不同的 Raspberry Pi 上安装事件监视器。 他们都获得了加载了 FlipClock 的同一个网页。

我的问题是:RasPis 上的时间不同。 (他们无法获得实际的 ptb-time,因为他们不允许连接到互联网)

这就是我所说的 Flipclock:

  <script type="text/javascript">
var clock = $('.clock').FlipClock({
  clockFace: 'TwentyFourHourClock',
  showSeconds: false
});

我想我可以解决这个问题,如果我通过 PHP 获取实际日期并在加载 FlipClock 时设置它,如下所示:

clock.setTime($servertime);

但我无法让它工作..

我对此很陌生,所以是的,如果有人知道如何解决它,请帮助我:(

编辑: 这就是我的新电话的样子:

     <div class="clock"></div>
  <script type="text/javascript">
   var serverTime = <?= time() ?>;
   var timeDifference = new Date - serverTime;
   var clock = $('.clock').FlipClock(timeDifference,{
      clockFace: 'TwentyFourHourClock',
      showSeconds: false
    });
  </script>

但这让我的时钟变得很奇怪,每次刷新都需要不同的小时和分钟。

【问题讨论】:

  • $servertime 的值是多少?应该是 1453726200 => epoch timestamp
  • @TimVermaelen 如果我回显 $servertime 我会得到 1453726371
  • 那么当您查看源代码时,var serverTime = &lt;?= time() ?&gt;; 看起来像什么?此外,您是否意识到您的服务器和用户的时间将在不同的时区,因此您的倒计时很可能是错误的?
  • 在我的源代码中是这样的var serverTime = 1453726647; 它不是倒计时,它只是一个普通的时钟。这些设备都在同一个时区。

标签: javascript php flipclock


【解决方案1】:

Javascript 只能在客户端(浏览器)上执行,因此它不能获取服务器时间。 所以,你必须调用服务器来获取日期。 一种方法是使用 Ajax 并调用一个仅将服务器时间返回的简单脚本。

另一种方法是直接在脚本中实现服务器时间。 如果您使用 PHP,您可以将 Time-Difference 与类似的东西发送到脚本:

<script>
   var serverTime = <?= time() ?>
   var timeDifference = new Date - serverTime;
</script>

另一种方法是在其中一个 Raspberry 上设置 NTP 服务器,这样所有其他人都可以在启动时从他那里获取时间。 这是您的解决方案: http://raspberrypi.tomasgreno.cz/ntp-client-and-server.html

玩得开心!

【讨论】:

  • 我猜你的时间应该是 newDate() + timeDifference
【解决方案2】:

这个帖子帮助了我......但我终于设法以另一种方式做到了,我认为这更简单:

var serverTime = '<?php echo Date('H:i:s'); ?>';
var clock = $('#clock').FlipClock(serverTime,{
  clockFace: 'TwentyFourHourClock',
});

【讨论】:

  • 感谢分享! :)
猜你喜欢
  • 2013-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多