根據後端傳的時間前端js進行倒計時

来源:https://www.cnblogs.com/zmdComeOn/archive/2020/01/29/12240059.html
-Advertisement-
Play Games

一、故事背景: 1. 今天公司有個項目需求 2. 在前端頁面實現一個倒計時功能 3. 初步設想:後端根據需求規定一個未來的時間,前端根據當前時間進行計算 4. 然後將時間格式化,時分秒的格式 5. 時間倒計時完成,刷新頁面獲取最新的頁面 6. 最後在前端展示;大致是這樣 二、上代碼 <!DOCTYP ...


一、故事背景:

1. 今天公司有個項目需求
2. 在前端頁面實現一個倒計時功能
3. 初步設想:後端根據需求規定一個未來的時間,前端根據當前時間進行計算
4. 然後將時間格式化,時分秒的格式
5. 時間倒計時完成,刷新頁面獲取最新的頁面
6. 最後在前端展示;大致是這樣
二、上代碼

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div class="js_time_txt">
</div>

<script src="./jquery-3.3.1.min.js"></script>
<script>
    $(function () {
// 倒計時
        var _ordertimer = null;
        var data = new Date();
        var txt = $('.js_time_txt');
        var buyTime = '2018-09-20 22:25:59'; //開搶時間
        var nowTime = '2018-09-20 22:23:45'; //介面返回當前時間
        var dateDiff = new Date(nowTime) - new Date(getnow()); //請求時間戳與本地時間戳
        if (dateDiff < 0) {
            dateDiff = Math.abs(dateDiff);
        }

        if (new Date(nowTime) > new Date(buyTime)) {
            $('.time-range').hide(); //已開槍
            return;
        } else {
            leftTimer(buyTime);
            _ordertimer = setInterval(function () {
                leftTimer(buyTime)
            }, 1000);
        }

        // 獲取當前時間 xxxx/xx/xx 00:00:00
        function getnow() {
            var year = data.getFullYear();
            var month = parseInt(data.getMonth() + 1) >= 10 ? parseInt(data.getMonth() + 1) : '0' + parseInt(data.getMonth() + 1);
            var day = data.getDate();
            var hours = data.getHours();
            var minutes = data.getMinutes();
            var seconds = data.getSeconds();
            var now = year + '/' + month + '/' + day + ' ' + hours + ':' + minutes + ':' + seconds;
            return now;
        }

        function leftTimer(enddate) {

            var leftTime = (new Date(enddate)) - new Date + dateDiff;

            var days = parseInt(leftTime / 1000 / 60 / 60 / 24, 10); //計算剩餘的天數
            var hours = parseInt(leftTime / 1000 / 60 / 60 % 24, 10); //計算剩餘的小時
            var minutes = parseInt(leftTime / 1000 / 60 % 60, 10);//計算剩餘的分鐘
            var seconds = parseInt(leftTime / 1000 % 60, 10);//計算剩餘的秒數
            days = checkTime(days);
            hours = checkTime(hours);
            minutes = checkTime(minutes);
            seconds = checkTime(seconds);

            if (days >= 0 || hours >= 0 || minutes >= 0 || seconds >= 0)
                txt.html(days + "天" + hours + "小時" + minutes + "分" + seconds + "秒");
            if (days <= 0 && hours <= 0 && minutes <= 0 && seconds <= 0) {
                window.clearInterval(_ordertimer);
                _ordertimer = null;
            }
        }

        function checkTime(i) { //將0-9的數字前面加上0,例1變為01
            if (i < 10) {
                i = "0" + i;
            }
            return i;
        }
    })
</script>
</body>
</html>

  


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、實現標簽小圖標2、live2D(二)這個更強,增加了菜單和換裝,換形象等功能,最終實現代碼如下 Live2D ... ...
  • 香哈菜譜是一款圍繞美食而成的小程式,在這裡可以查看各式各樣的菜譜。 一、打開微信開發者工具,新建一個項目:xhcp。如下圖: 二、建立如下的一些目錄: 三、將底部標簽導航圖標、美食輪播圖片、宮格導航圖標、香哈頭條美食圖片的素材放置於pages文件夾下的images中: Ⅰ、底部標簽欄設計 四、打開a ...
  • sass基礎語法 !default 表示預設值 + 拼接字元串 #{ } 識別為變數名 demo.scss $width:300px; $height:300px; $color:#e03434; $baseWidth:200px; $baseWidth:100px !default; .div1{ ...
  • 開了一個9000埠,又開了一個8881埠,在9000埠訪問頁面,數據介面是8881,這樣就產生了跨域,如何解決? webpack中做如下配置: 這樣數據就既可以通過8881埠訪問,有可以通過9000埠訪問 ...
  • 首先官網(http://www.ruby-lang.org/en/downloads/)下載 ruby (1)打開鏈接進入到下載頁面,點擊如下位置進行下載 (2)下載頁面 (3)進入到各個版本的列表頁 安裝 sass(1)在開始菜單輸入“start”會出現“Start Command Prompt ...
  • 一、過渡模塊的基本使用 1.*:hover;這個偽類選擇器除了可以用在a標簽上,還可以用在其他任何標簽上。 2.過渡三要素: (1)必須要有屬性發生變化;(2)必須告訴系統哪個屬性需要執行過渡效果;(3)必須告訴系統過渡效果持續的時長。 3.註意點: 當多個屬性需要同時執行過渡效果的時候,可以使用英 ...
  • 1.新建js文件 utils.js,自定義方法 let local = { say() { console.log('我是插件裡面自定義的方法') } } export default { install: function(vm) { vm.prototype.$local = local } } ...
  • v-for: v-for 指令需要以 site in sites 形式的特殊語法, sites 是源數據數組並且 site 是數組元素迭代的別名。 demo1. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...