fe-interview icon indicating copy to clipboard operation
fe-interview copied to clipboard

[js] 第1180天 使用js写一个方法将12小时制与24小时制相互转换

Open haizhilin2013 opened this issue 3 years ago • 1 comments
trafficstars

第1180天 使用js写一个方法将12小时制与24小时制相互转换

3+1官网

我也要出题

haizhilin2013 avatar Jul 08 '22 20:07 haizhilin2013

/**
 * @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)
  }
}

web-ma-hub avatar Jul 21 '22 02:07 web-ma-hub