63 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| // 补0,如1 -> 01
 | ||
| function padZero(num, targetLength = 2) {
 | ||
|     let str = `${num}`
 | ||
|     while (str.length < targetLength) {
 | ||
|         str = `0${str}`
 | ||
|     }
 | ||
|     return str
 | ||
| }
 | ||
| const SECOND = 1000
 | ||
| const MINUTE = 60 * SECOND
 | ||
| const HOUR = 60 * MINUTE
 | ||
| const DAY = 24 * HOUR
 | ||
| export function parseTimeData(time) {
 | ||
|     const days = Math.floor(time / DAY)
 | ||
|     const hours = Math.floor((time % DAY) / HOUR)
 | ||
|     const minutes = Math.floor((time % HOUR) / MINUTE)
 | ||
|     const seconds = Math.floor((time % MINUTE) / SECOND)
 | ||
|     const milliseconds = Math.floor(time % SECOND)
 | ||
|     return {
 | ||
|         days,
 | ||
|         hours,
 | ||
|         minutes,
 | ||
|         seconds,
 | ||
|         milliseconds
 | ||
|     }
 | ||
| }
 | ||
| export function parseFormat(format, timeData) {
 | ||
|     let {
 | ||
|         days,
 | ||
|         hours,
 | ||
|         minutes,
 | ||
|         seconds,
 | ||
|         milliseconds
 | ||
|     } = timeData
 | ||
|     // 如果格式化字符串中不存在DD(天),则将天的时间转为小时中去
 | ||
|     if (format.indexOf('DD') === -1) {
 | ||
|         hours += days * 24
 | ||
|     } else {
 | ||
|         // 对天补0
 | ||
|         format = format.replace('DD', padZero(days))
 | ||
|     }
 | ||
|     // 其他同理于DD的格式化处理方式
 | ||
|     if (format.indexOf('HH') === -1) {
 | ||
|         minutes += hours * 60
 | ||
|     } else {
 | ||
|         format = format.replace('HH', padZero(hours))
 | ||
|     }
 | ||
|     if (format.indexOf('mm') === -1) {
 | ||
|         seconds += minutes * 60
 | ||
|     } else {
 | ||
|         format = format.replace('mm', padZero(minutes))
 | ||
|     }
 | ||
|     if (format.indexOf('ss') === -1) {
 | ||
|         milliseconds += seconds * 1000
 | ||
|     } else {
 | ||
|         format = format.replace('ss', padZero(seconds))
 | ||
|     }
 | ||
|     return format.replace('SSS', padZero(milliseconds, 3))
 | ||
| }
 | ||
| export function isSameSecond(time1, time2) {
 | ||
|     return Math.floor(time1 / 1000) === Math.floor(time2 / 1000)
 | ||
| }
 |