QAQ
This commit is contained in:
@@ -102,6 +102,49 @@ export const parseDateTime = dateTimeStr => {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算当前时间距离目标时间的剩余时、分、秒
|
||||
* @param {string} targetTimeStr - 目标时间字符串,格式如 "2026-02-10 21:50:40"
|
||||
* @returns {Object} 包含hours、minutes、seconds的对象,适配uni-countdown组件
|
||||
*/
|
||||
export const calculateRemainingTime = targetTimeStr => {
|
||||
// 1. 处理目标时间,转换为时间戳(解决时区问题,手动拆分时间字符串)
|
||||
const [datePart, timePart] = targetTimeStr.split(' ')
|
||||
const [year, month, day] = datePart.split('-').map(Number)
|
||||
const [hour, minute, second] = timePart.split(':').map(Number)
|
||||
// 注意:月份是0开始的,所以要减1
|
||||
const targetTime = new Date(
|
||||
year,
|
||||
month - 1,
|
||||
day,
|
||||
hour,
|
||||
minute,
|
||||
second
|
||||
).getTime()
|
||||
|
||||
// 2. 获取当前时间戳
|
||||
const currentTime = new Date().getTime()
|
||||
|
||||
// 3. 计算剩余总秒数(如果目标时间已过,剩余时间为0)
|
||||
let remainingSeconds = Math.max(
|
||||
0,
|
||||
Math.floor((targetTime - currentTime) / 1000)
|
||||
)
|
||||
|
||||
// 4. 转换为时、分、秒
|
||||
const hours = Math.floor(remainingSeconds / 3600) // 1小时=3600秒
|
||||
remainingSeconds = remainingSeconds % 3600 // 剩余的秒数
|
||||
const minutes = Math.floor(remainingSeconds / 60) // 1分钟=60秒
|
||||
const seconds = remainingSeconds % 60 // 最终剩余的秒数
|
||||
|
||||
// 5. 返回适配uni-countdown的格式
|
||||
return {
|
||||
hours,
|
||||
minutes,
|
||||
seconds
|
||||
}
|
||||
}
|
||||
|
||||
export const getRemainingTime = endTimeStr => {
|
||||
const now = new Date().getTime() // 当前时间戳(毫秒)
|
||||
const end = new Date(endTimeStr.replace(' ', 'T')).getTime() // 转为 ISO 格式并获取时间戳
|
||||
|
||||
Reference in New Issue
Block a user