trafficstars
第1180天 使用js写一个方法将12小时制与24小时制相互转换
3+1官网
我也要出题
/**
* @description 将12小时制与24小时制相互转换
* @param {string} datestring 时间字符串 'YYYY-MM-DD hh:mm:ss'
* @returns {string} 转换结果
*/
function hoursTransform(datestring) {
// TODO: datestring需要校验格式,或者支持多格式传入
const date = parseDate(new Date(datestring)),
toSystem = date.hour > 12 ? 12 : 24 // 将要转换的时间进制
if (toSystem === 12) {
return `${date.year}-${date.month}-${date.day} ${
date.hour < 12 ? date.hour : padStart(date.hour % 12)
}:${date.minute}:${date.second}${date.hour >= 12 ? ' PM' : ' AM'}`
} else {
return `${date.year}-${date.month}-${date.day} ${date.hour}:${date.minute}:${date.second}`
}
}
/**
* @description 将Date转为对象形式
* @param {date} date date对象
* @returns {object}
*/
function parseDate(date = new Date()) {
const Y = date.getFullYear(),
M = padStart(date.getMonth() + 1),
D = padStart(date.getDate()),
h = padStart(date.getHours()),
m = padStart(date.getMinutes()),
s = padStart(date.getSeconds())
return {
year: Y,
month: M,
day: D,
hour: h,
minute: m,
second: s
}
}
/**
* @description 数字补0
* @param {number} num 数字
* @param {string} padString 填充字符
* @returns string
*/
function padStart(num, padString = '0') {
if (num >= 10) {
return String(num)
} else {
return String(num).padStart(2, padString)
}
}