javascript實(shí)現(xiàn)同步服務(wù)器時(shí)間、同步倒計(jì)時(shí)

這篇文章主要介紹“javascript實(shí)現(xiàn)同步服務(wù)器時(shí)間、同步倒計(jì)時(shí)”,在日常操作中,相信很多人在javascript實(shí)現(xiàn)同步服務(wù)器時(shí)間、同步倒計(jì)時(shí)問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”javascript實(shí)現(xiàn)同步服務(wù)器時(shí)間、同步倒計(jì)時(shí)”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名與空間、網(wǎng)頁空間、營銷軟件、網(wǎng)站建設(shè)、榮成網(wǎng)站維護(hù)、網(wǎng)站推廣。

之前在網(wǎng)上看到有人提問,如何在頁面上同步顯示服務(wù)器的時(shí)間,其實(shí)實(shí)現(xiàn)方法有幾種,可能 一般人立馬就想到可以使用Ajax每隔一秒去請求服務(wù)器,然后將服務(wù)器獲取到時(shí)間顯示在頁面上,這樣雖然能夠?qū)崿F(xiàn),但存在一個(gè)很大的問題,那就是每隔一秒 去請求服務(wù)器,這樣如果用戶多了,服務(wù)器就會崩潰(內(nèi)存占用率會很大),所以在我看來,這種方法不可行,我這里給出一種解決方案,能夠?qū)崿F(xiàn)同步服務(wù)器時(shí)間、同步倒計(jì)時(shí),卻不占用服務(wù)器太多資源,下面我給寫實(shí)現(xiàn)的思路

***步,當(dāng)用戶***次瀏覽頁面時(shí),服務(wù)器首先獲取當(dāng)前時(shí)間并顯示在頁面上(比如:顯示在ID為timebox span中)

第二步,設(shè)置一個(gè)每隔一秒就計(jì)算新的時(shí)間(新時(shí)間以服務(wù)器時(shí)間為初始值,然后每隔一秒累加一秒并生成新的時(shí)間)

第三步,顯示第二步計(jì)算的時(shí)間

是不是很簡單,總結(jié)成一句話就是:以服務(wù)器時(shí)間為初始值,然后在頁面上自動每隔一秒就累加一秒生成新時(shí)間,這樣就能保證與服務(wù)器時(shí)間同步了,誤差基本在幾秒內(nèi),應(yīng)該沒關(guān)系了,好了看一下實(shí)現(xiàn)的代碼吧:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

<span id="timebox">11:21:55</span> //***次將服務(wù)器時(shí)間顯示在這里

<script type="text/javascript">

    $(function () {

        var oTime = $("#timebox");

        var ts = oTime.text().split(":", 3);

        var tnums = [parseInt(ts[0]), parseInt(ts[1]), parseInt(ts[2])];

        setInterval(function () {

            tnums = getNextTimeNumber(tnums[0], tnums[1], tnums[2]);

            showNewTime(tnums[0], tnums[1], tnums[2]);

        }, 1000);

        function showNewTime(h, m, s) {

            var timeStr = ("0" + h.toString()).substr(-2) + ":"

                            + ("0" + m.toString()).substr(-2) + ":"

                            + ("0" + s.toString()).substr(-2);

            oTime.text(timeStr);

        }

        function getNextTimeNumber(h, m, s) {

            if (++s == 60) {

                s = 0;

            }

            if (s == 0) {

                if (++m == 60) {

                    m = 0;

                }

            }

            if (m == 0) {

                if (++h == 24) {

                    h = 0;

                }

            }

            return [h, m, s];

        }

    });

</script>

代碼很簡單在此就不多作說明(我上面只顯示時(shí)分秒,大家也可以加上日期,加上日期可在當(dāng)h==0時(shí),直接從服務(wù)器獲取一個(gè)日期或完整的時(shí)間,作為一次時(shí)間的校對),不懂的可以在下面評論,我會及時(shí)回復(fù)的,然后按照這種思路來實(shí)現(xiàn)一下同步倒計(jì)時(shí),首先說明一下,什么是同步倒計(jì)時(shí),就是類似秒殺一樣,設(shè)置一個(gè)結(jié)束時(shí)間,然后計(jì)算當(dāng)前時(shí)間與結(jié)束時(shí)間之間間隔,而且必需保證在不同的電腦、瀏覽器上顯示的倒計(jì)時(shí)時(shí)間均相同,實(shí)現(xiàn)代碼如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

<!DOCTYPE html>

<html>

<head>

    <title>同步倒計(jì)時(shí)</title>

    <script type="text/javascript" src="jquery-1.4.4.min.js"></script>

</head>

<body>

    <span id="timebox">1天00時(shí)00分12秒</span> <!--假設(shè):1天00時(shí)00分12秒是從服務(wù)器獲取的倒計(jì)時(shí)數(shù)據(jù)-->

    <script type="text/javascript">

        $(function () {

            var tid = setInterval(function () {

                var oTimebox = $("#timebox");

                var syTime = oTimebox.text();

                var totalSec = getTotalSecond(syTime) - 1;

                if (totalSec >= 0) {

                    oTimebox.text(getNewSyTime(totalSec));

                } else {

                    clearInterval(tid);

                }

            }, 1000);

            //根據(jù)剩余時(shí)間字符串計(jì)算出總秒數(shù)

            function getTotalSecond(timestr) {

                var reg = /\d+/g;

                var timenums = new Array();

                while ((r = reg.exec(timestr)) != null) {

                    timenums.push(parseInt(r));

                }

                var second = 0, i = 0;

                if (timenums.length == 4) {

                    second += timenums[0] * 24 * 3600;

                    i = 1;

                }

                second += timenums[i] * 3600 + timenums[++i] * 60 + timenums[++i];

                return second;

            }

            //根據(jù)剩余秒數(shù)生成時(shí)間格式

            function getNewSyTime(sec) {

                var s = sec % 60;

                sec = (sec - s) / 60; //min

                var m = sec % 60;

                sec = (sec - m) / 60; //hour

                var h = sec % 24;

                var d = (sec - h) / 24;//day

                var syTimeStr = "";

                if (d > 0) {

                    syTimeStr += d.toString() + "天";

                }

                syTimeStr += ("0" + h.toString()).substr(-2) + "時(shí)"

                            + ("0" + m.toString()).substr(-2) + "分"

                            + ("0" + s.toString()).substr(-2) + "秒";

                return syTimeStr;

            }

        });

    </script>

</body>

</html>

為了保證倒計(jì)時(shí)的精確度,我采用了先將倒計(jì)時(shí)時(shí)間間隔統(tǒng)一計(jì)算成秒,然后減1秒再重新生成時(shí)間格式,當(dāng)然也可以按照上面時(shí)間同步的例子,直接進(jìn)行時(shí)間減少,方法很多,我這個(gè)不一定是***的,歡迎大家交流,謝謝!

到此,關(guān)于“javascript實(shí)現(xiàn)同步服務(wù)器時(shí)間、同步倒計(jì)時(shí)”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

文章名稱:javascript實(shí)現(xiàn)同步服務(wù)器時(shí)間、同步倒計(jì)時(shí)
本文來源:http://muchs.cn/article20/gppojo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、網(wǎng)站導(dǎo)航、動態(tài)網(wǎng)站、小程序開發(fā)、全網(wǎng)營銷推廣網(wǎng)站設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化