2016-01-25 73 views
3

我試圖在7個不同的樹莓派上獲得一個事件監視器。 他們都獲得與FlipClock加載相同的網頁。FlipClock - 使用服務器時間而不是客戶端時間

我的問題是:RasPis上的時間不同。 (他們不能得到實際PTB-時間,因爲他們不能連接到互聯網)

這是我怎麼叫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> 

但這使我的時鐘會奇怪,每更新一次,都需要不同的時間和分鐘。

+0

什麼'$ servertime'的價值?應該是'1453726200' => [epoch timestamp](http://www.epochconverter.com/) –

+0

@TimVermaelen如果我回顯$ servertime,我得到'1453726371' –

+0

所以當你查看源代碼時,var serverTime = ;'看起來像?你也意識到你的服務器和用戶的時間將在不同的時區,所以你倒計時很可能是錯誤的? – epascarello

回答

1

這個線程幫助我......但我終於成功地做到這一點的另一種方式,我認爲這是simplier:

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

感謝分享! :) –

3

Javascript只能在客戶端(瀏覽器)上執行,所以它可以而不是獲取服務器時間。 所以,你必須調用服務器來獲取日期。 一種方法是使用Ajax並調用僅發送服務器時間的簡單腳本。

另一種方法是直接在腳本內部實現Servertime。

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

一種不同的方式是建立一個NTP服務器上的Raspberrys之一,因此所有其他人可以獲取時間: 如果你使用PHP,你可以用類似的東西到腳本發送時間差從他開機時間。 這裏是你的解決方案: http://raspberrypi.tomasgreno.cz/ntp-client-and-server.html

玩得開心!

+0

當我使用timeDifference作爲時間,它保持改變輸出每次刷新的時間(大量!!) –

+0

你的時間將是newDate()+ timeDifference,我想 – Mijago

+0

如果我這樣做,並採取與newDate + var時間差它只是使用本地時鐘。 我解決了NTP服務器的問題,非常容易,謝謝!:) –

相關問題