uniapp 實現時分秒 分別倒計時

效果

<view class="issue-price-countdown">
?? ??? ??<CountDown :endTimestamp="1745996085000"></CountDown>
?</view>

引入組件

import CountDown from '@/components/CountDown.vue';

<template>
?? ?<view class="countdown">
?? ??? ?<view class="time-box hour">{{ currentHours }}</view>
?? ??? ?<text class="colon">:</text>
?? ??? ?<view class="time-box minute">{{ currentMinutes }}</view>
?? ??? ?<text class="colon">:</text>
?? ??? ?<view class="time-box second">{{ currentSeconds }}</view>
?? ?</view>
</template>

<script>
?? ?export default {
?? ??? ?props: {
?? ??? ??? ?// 接收13位時間戳(結束時間)
?? ??? ??? ?endTimestamp: {
?? ??? ??? ??? ?type: Number,
?? ??? ??? ??? ?required: true
?? ??? ??? ?}
?? ??? ?},
?? ??? ?data() {
?? ??? ??? ?return {
?? ??? ??? ??? ?remainingTime: 0, ?// 剩余總秒數
?? ??? ??? ??? ?timer: null,
?? ??? ??? ??? ?currentHours: 0,
?? ??? ??? ??? ?currentMinutes: 0,
?? ??? ??? ??? ?currentSeconds: 0
?? ??? ??? ?}
?? ??? ?},
?? ??? ?methods: {
?? ??? ? ?// 初始化倒計時
?? ??? ??? ?initCountdown() {
?? ??? ??? ??? ?this.clearTimer()
?? ??? ??? ??? ?this.calculateRemaining()
?? ??? ??? ??? ?
?? ??? ??? ??? ?if (this.remainingTime > 0) {
?? ??? ??? ??? ??? ?this.timer = setInterval(() => {
?? ??? ??? ??? ??? ??? ?this.updateTime()
?? ??? ??? ??? ??? ?}, 1000)
?? ??? ??? ??? ?}
?? ??? ??? ?},
?? ??? ??? ?// 計算剩余時間
?? ??? ??? ?calculateRemaining() {
?? ??? ??? ??? ?const now = Date.now()
?? ??? ??? ??? ?this.remainingTime = Math.max(0, Math.floor((this.endTimestamp - now) / 1000))
?? ??? ??? ??? ?this.updateDisplayTime()
?? ??? ??? ?},
?? ??? ??? ?
?? ??? ??? ?// 更新時間顯示
?? ??? ??? ?updateDisplayTime() {
?? ??? ??? ??? ?let seconds = this.remainingTime % 60
?? ??? ??? ??? ?let minutes = Math.floor(this.remainingTime / 60) % 60
?? ??? ??? ??? ?const hours = Math.floor(this.remainingTime / 3600)
?? ?
?? ??? ??? ??? ?// 實現級聯更新效果
?? ??? ??? ??? ?if (this.currentSeconds === 0 && seconds === 59) {
?? ??? ??? ??? ??? ?this.currentMinutes = minutes
?? ??? ??? ??? ?}
?? ??? ??? ??? ?if (this.currentMinutes === 0 && minutes === 59) {
?? ??? ??? ??? ??? ?this.currentHours = hours
?? ??? ??? ??? ?}
?? ?
?? ??? ??? ??? ?this.currentSeconds = this.pad(seconds)
?? ??? ??? ??? ?this.currentMinutes = this.pad(minutes)
?? ??? ??? ??? ?this.currentHours = this.pad(hours)
?? ??? ??? ?},
?? ??? ??? ?// 每秒更新
?? ??? ??? ?updateTime() {
?? ??? ??? ??? ?this.remainingTime = Math.max(0, this.remainingTime - 1)
?? ??? ??? ??? ?this.updateDisplayTime()
?? ?
?? ??? ??? ??? ?if (this.remainingTime <= 0) {
?? ??? ??? ??? ??? ?this.clearTimer()
?? ??? ??? ??? ??? ?this.$emit('timeup')
?? ??? ??? ??? ?}
?? ??? ??? ?},
?? ??? ??? ?
?? ??? ??? ?// 補零函數
?? ??? ??? ?pad(n) {
?? ??? ??? ??? ?return n < 10 ? '0' + n : n
?? ??? ??? ?},
?? ??? ??? ?
?? ??? ??? ?// 清除定時器
?? ??? ??? ?clearTimer() {
?? ??? ??? ??? ?if (this.timer) {
?? ??? ??? ??? ??? ?clearInterval(this.timer)
?? ??? ??? ??? ??? ?this.timer = null
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ?},
?? ??? ?watch: {
?? ??? ??? ?endTimestamp: {
?? ??? ??? ??? ?immediate: true,
?? ??? ??? ??? ?handler(newVal) {
?? ??? ??? ??? ??? ?this.initCountdown()
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ?},
?? ??? ?created() {
? ? ? ? ??
?? ??? ?}
?? ?}
</script>

<style lang="scss" scoped>
?? ?.countdown {
?? ??? ?display: flex;
?? ??? ?align-items: center;
?? ??? ?justify-content: space-between;
?? ??? ?.time-box {
?? ??? ??? ?width: 52rpx;
?? ??? ??? ?height: 52rpx;
?? ??? ??? ?background: #313131;
?? ??? ??? ?line-height: 52rpx;
?? ??? ??? ?text-align: center;
?? ??? ??? ?border-radius: 10rpx 10rpx 10rpx 10rpx;
?? ??? ??? ?font-weight: bold;
?? ??? ?}
?? ??? ?.colon {
?? ??? ??? ?color: #313131;
?? ??? ??? ?margin: 0 12rpx;
?? ??? ?}
?? ?}
</style>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/79030.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/79030.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/79030.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

從CRUD到復雜業務:AI自動生成電商優惠券疊加邏輯(新手救星指南)

在 Java 編程的廣闊天地中,據統計,高達 80% 的新手會在業務邏輯編寫環節陷入困境。業務邏輯作為軟件系統的核心靈魂,承載著從用戶需求到代碼實現的關鍵轉化過程,為何卻成為新手難以逾越的 “鴻溝”?飛算 JavaAI 的出現,又將如何打破這一僵局? 一、Java 新手卡在業務邏輯的根…

23頁PDF | 數據治理實施方案 :規劃、執行、評價、改進四步走的管控模式

在當今數字化時代&#xff0c;數據已經成為企業和組織的核心資產之一。然而&#xff0c;隨著數據量的不斷增長和數據來源的日益多樣化&#xff0c;數據治理變得愈發重要。有效的數據治理能夠確保數據的質量、安全和合規性&#xff0c;提升數據的價值和利用效率。那么&#xff0…

curl詳解

curl 是一個常用的命令行工具&#xff0c;用于發送 HTTP 請求&#xff0c;支持包括 GET、POST、PUT、DELETE 等在內的多種 HTTP 方法。它非常適合用來測試 API、下載文件、與后端服務進行交互等。接下來&#xff0c;我會詳細講解 curl 的基本用法以及常見的應用場景。 &#x…

Win11安裝Ubuntu20.04簡記

寫在前面 之前裝的22.04&#xff0c;不穩定&#xff0c;把22.04卸載了&#xff0c;重新安裝20.04系統。這里主要把卸載和安裝的過程中參考到的博客在這記錄一下。 卸載ubuntu系統參考的博文 卸載參考博文1 卸載參考博文2 Ubuntu20.04安裝參考博文 安裝參考博文1 安裝參考博…

云原生 | K8S中數據存儲之StorageClass

在一個大規模的Kubernetes集群里,可能有成千上萬個PVC,這就意味著運維人員必須實現創建出這個多個 PV,此外,隨著項目的需要,會有新的PVC不斷被提交,那么運維人員就需要不斷的添加新的,滿足要求的PV,否 則新的Pod就會因為PVC綁定不到PV而導致創建失敗。而且通過 PVC 請求到一定的…

基于Hadoop大數據技術音樂推薦系統數據分析與可視化(基于Spark和Hive的音樂推薦系統數據分析與可視化)基于Python的音樂推薦系統數據分析與可視化

基于Hadoop大數據技術音樂推薦系統數據分析與可視化&#xff08;基于Spark和Hive的音樂推薦系統數據分析與可視化&#xff09;基于Python的音樂推薦系統數據分析與可視化 1. 開發工具和實現技術 Pycharm, Python3.7&#xff0c;Django框架&#xff0c;Hadoop&#xff0c;Spar…

podman/docker國內可用的docker鏡像源(2025-05)

一、添加Docker國內鏡像 1、修改 /etc/docker/daemon.json 設置 registry mirror&#xff0c;具體命令如下: sudo vim /etc/docker/daemon.json <<EOF {"registry-mirrors": ["https://docker.1ms.run","https://docker.xuanyuan.me",&q…

【Java ee初階】多線程(4)

一、java是怎么做到可重入的 java中&#xff0c;通過synchronized進行加鎖&#xff0c;指定一個&#xff08;&#xff09;包含了一個鎖對象。&#xff08;鎖對象本身是一個啥樣的對象&#xff0c;這并不重要&#xff0c;重點關注鎖對象是不是同一個對象&#xff09; 后面搭配…

LaTex、pdfLaTex、XeLaTex和luaLaTex的區別和聯系

之前一直搞不懂這些亂七八糟的Tex到底有啥區別&#xff0c;不同引擎不同編譯器換來換去&#xff0c;查了些資料又問了下AI&#xff0c;總算是搞懂了。 大概是這樣&#xff0c;很久以前有人寫了個Tex排版引擎&#xff0c;輸入一些代碼命令&#xff0c;輸出dvi文件&#xff08;設…

【Unity】一個UI框架例子

使用框架前置條件&#xff1a;調整腳本運行順序, Canvas掛載UIManager, Panel掛載對應的UIController、UI控件掛載UIControl。 UIManager:UI管理器&#xff0c;用于處理和管理各個UIController和UIControl的業務邏輯&#xff0c;掛載在Canvas上&#xff1b; UIController:界面層…

kalibr:相機模型

文章目錄 ??簡介Kalibr標定支持的相機模型及適用場景?? 針孔相機模型(Pinhole)?? 全向相機模型(Omnidirectional)?? 特殊模型?? 選型建議?? 注意事項??簡介 Kalibr作為多傳感器標定的重要工具,支持多種相機模型以適應不同光學特性的視覺傳感器。其核心相機…

今日行情明日機會——20250430

指數目前仍然在震蕩區間&#xff0c;等后續的方向選擇以及放量后的主線~ 2025年4月30日漲停主要行業方向分析 一、核心主線方向 機器人概念&#xff08;政策催化技術突破&#xff09; ? 漲停家數&#xff1a;18家。 ? 代表標的&#xff1a; ? 全筑股份&#xff08;工業機器…

量子加密通信:打造未來信息安全的“銅墻鐵壁”

在數字化時代&#xff0c;信息安全已成為全球關注的焦點。隨著量子計算技術的飛速發展&#xff0c;傳統的加密算法面臨著前所未有的挑戰。量子計算機的強大計算能力能夠輕易破解現有的加密體系&#xff0c;這使得信息安全領域急需一種全新的加密技術來應對未來的威脅。量子加密…

微信小程序中基于 SSE 實現輕量級實時通訊 —— 原理、實踐與對比分析

本文系統梳理了在微信小程序開發中&#xff0c;如何使用 SSE&#xff08;Server-Sent Events&#xff09;方式實現輕量級即時通訊&#xff0c;結合實際項目實踐&#xff0c;詳細講解原理、實現流程、對比 WebSocket/TCP/UDP 通訊方式&#xff0c;并給出完整模塊封裝與最佳實踐建…

OpenCV 圖形API(73)圖像與通道拼接函數-----執行 查找表操作圖像處理函數LUT()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 對矩陣執行查找表變換。 函數 LUT 使用來自查找表中的值填充輸出矩陣。輸入矩陣中的值作為查找表的索引。也就是說&#xff0c;函數對 src 中的…

MyBatis 類型處理器(TypeHandler)注冊與映射機制:JsonListTypeHandler和JsonListTypeHandler注冊時機

下面幾種機制會讓你的 List<String>/Map<String,?> 能正確讀寫成 JSON 數組&#xff0f;對象文本&#xff1a; MyBatis-Plus 自動注冊 最新版本的 MyBatis-Plus starter 會把類路徑下所有帶 MappedTypes({List.class})、MappedJdbcTypes(JdbcType.VARCHAR) 這類注…

專題二十一:無線局域網——WLAN

一、WLAN簡介 WLAN&#xff08;Wireless Local Area Network &#xff09;無線局域網&#xff0c;使用的是 IEEE 802.11 標準系列。 標準版本發布年份最大傳輸速率頻段Wi-Fi代數特點/描述IEEE 802.1119971–2 Mbps2.4 GHzWi-Fi 0最早的無線局域網標準&#xff0c;傳輸速率低&…

python多進程的使用

多進程編程全面指南&#xff1a;從入門到實踐 摘要&#xff1a;本文是為初學者設計的Python多進程編程全攻略&#xff0c;涵蓋基礎概念、核心函數詳解、系統特性分析&#xff0c;并附帶流程圖、測試用例、開源項目推薦和經典書籍清單。通過8個實戰代碼示例和3個性能對比實驗&am…

數據庫管理與安全:從用戶權限到備份恢復的全面指南

引言 在數字化時代&#xff0c;數據已成為組織最寶貴的資產之一。數據庫作為存儲和管理這些數據的核心系統&#xff0c;其安全性和可靠性直接關系到企業的運營和發展。無論是金融交易記錄、醫療健康信息&#xff0c;還是電子商務平臺的用戶數據&#xff0c;都需要通過完善的數…

Electron Forge【實戰】帶圖片的 AI 聊天

改用支持圖片的 AI 模型 qwen-turbo 僅支持文字&#xff0c;要想體驗圖片聊天&#xff0c;需改用 qwen-vl-plus src/initData.ts {id: 2,name: "aliyun",title: "阿里 -- 通義千問",desc: "阿里百煉 -- 通義千問",// https://help.aliyun.com/z…