搞快点

Date对象使用及常用时间格式化代码块

Date 对象

整理一些时间格式化的方法

1.

/**
 * 时间格式化
 * @param {date} timeStamp 要格式化的时间对象
 * @return {string} 2019年10月31日 16:22
 */

function format_date(timeStamp) {
  let date = new Date(timeStamp)
  return date.getFullYear() + '年' + prefix_zero(date.getMonth() + 1) + '月' + prefix_zero(date.getDate()) + '日 ' + prefix_zero(date.getHours()) + ':' + prefix_zero(date.getMinutes())
}
/**
 * 数字格式化
 * @param {number} num 要格式化的数值
 * @return {string} 把小于10的数值前面加上0
 */
function prefix_zero(num) {
  return num >= 10 ? num : '0' + num
}

2.

/**
 * 昨天的字符串格式时间
 * @return {string} 返回当前时间 - 1天
 */
function getYesterday() {
  var d = new Date()
  d.setDate(d.getDate() - 1)
  return d.toLocaleString()
}

3.

/**
 * 明天的字符串格式时间
 * @return {string} 返回当前时间 + 1天
 */
const getTomorrow = () => {
  let d = new Date()
  d.setDate(d.getDate() + 1)
  return d.toLocalString()
}

4.

/**
 * 获得本周的开始日期
 * @param {number} start 不传默认一周以周日开始 1 表示以周一开始
 * @return {date} timeStamp 时间戳
 */
function getWeekDate(start = 0) {
  let d = new Date('2019-12-15')
  let D = d.getDate()
  if (start == 0) {
    return d.setDate(D - d.getDay())
  } else {
    let W = d.getDay() || 6
    return d.setDate(D - W + 1)
  }
}

5.

/**
 * 获得最近一周时间段
 * @return {date[]}
 */
function getLastWeek() {
  let d = new Date()
  let D = d.getDate()
  d.setDate(D - 7)
  return [d, new Date()]
}

6.

/**
 * 获得某月的天数
 * @param {number} year 年
 * @param {number} month 月 从 0 开始
 * @return {number} 某月的天数, 不传参数为当月天数
 */
function getMonthDays(year, month) {
  let d = new Date()
  year = year || d.getFullYear()
  month = month || d.getMonth()
  var monthStart = new Date(year, month, 1)
  var monthEnd = new Date(year, month + 1, 1)
  var days = (monthEnd - monthStart) / (1000 * 60 * 60 * 24)
  return days
}

7.

/**
 * 获得本月的开始或结束日期
 * @param {number} isEnd 不传默认本周的开端日期 1 本周的结束日期
 * @return {date} timeStamp 时间戳
 */
function getMonthDate(isEnd = 0) {
  let d = new Date()
  d.setDate(1)
  if (isEnd) {
    d.setDate(d.getDate() + getMonthDays() - 1)
    return d
  }
  return d
}

8.

/**
 * 倒计时时间格式化
 * @param {date} timeStamp 要格式化的时间对象
 * @return {string}
 * 若时间大于1天 返回 n天n小时n分钟
 * 若时间小于1天,大于1小时 返回 n小时n分钟n秒
 * 若时间小于1小时,大于1分钟 返回 n分钟n秒
 * 若时间小于1分钟 返回 n秒
 */
function format_time(timeStamp) {
  let day = Math.floor(timeStamp / (24 * 3600 * 1000))
  let leave1 = timeStamp % (24 * 3600 * 1000)
  let hours = Math.floor(leave1 / (3600 * 1000))
  let leave2 = leave1 % (3600 * 1000)
  let minutes = Math.floor(leave2 / (60 * 1000))
  let leave3 = leave2 % (60 * 1000)
  let seconds = Math.floor(leave3 / 1000)
  if (day) return day + '天' + hours + '小时' + minutes + '分'
  if (hours) return hours + '小时' + minutes + '分' + seconds + '秒'
  if (minutes) return minutes + '分' + seconds + '秒'
  if (seconds) return seconds + '秒'
  return '时间到!'
}

dayjs 库

轻量的处理时间和日期的 JavaScript 库

参考文档 github 中文文档

在本页面打开控制台即可体验 dayjs 的api

赞(1) 打赏
未经允许不得转载:稻草人 » Date对象使用及常用时间格式化代码块

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址