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) | |||
|  | } |