123 lines
2.5 KiB
JavaScript
123 lines
2.5 KiB
JavaScript
/**
|
|
* 早安电台 — 通用工具函数
|
|
*/
|
|
|
|
/**
|
|
* 秒数格式化为 mm:ss
|
|
* @param {number} seconds - 总秒数
|
|
* @returns {string} - 如 "01:30"
|
|
*/
|
|
function formatTime(seconds) {
|
|
seconds = Math.floor(seconds || 0)
|
|
var min = Math.floor(seconds / 60)
|
|
var sec = seconds % 60
|
|
return padZero(min) + ':' + padZero(sec)
|
|
}
|
|
|
|
/**
|
|
* 补零
|
|
*/
|
|
function padZero(num) {
|
|
return num < 10 ? '0' + num : '' + num
|
|
}
|
|
|
|
/**
|
|
* 日期格式化
|
|
* @param {Date|string} date
|
|
* @param {string} [format='YYYY-MM-DD']
|
|
* @returns {string}
|
|
*/
|
|
function formatDate(date, format) {
|
|
if (typeof date === 'string') {
|
|
date = new Date(date.replace(/-/g, '/'))
|
|
}
|
|
format = format || 'YYYY-MM-DD'
|
|
|
|
var year = date.getFullYear()
|
|
var month = padZero(date.getMonth() + 1)
|
|
var day = padZero(date.getDate())
|
|
|
|
return format
|
|
.replace('YYYY', year)
|
|
.replace('MM', month)
|
|
.replace('DD', day)
|
|
}
|
|
|
|
/**
|
|
* 获取星期几
|
|
* @param {Date} [date]
|
|
* @returns {string} 周一~周日
|
|
*/
|
|
function getWeekDay(date) {
|
|
date = date || new Date()
|
|
var days = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']
|
|
return days[date.getDay()]
|
|
}
|
|
|
|
/**
|
|
* 获取今天的日期字符串 YYYY-MM-DD
|
|
*/
|
|
function getTodayStr() {
|
|
return formatDate(new Date())
|
|
}
|
|
|
|
/**
|
|
* 获取友好的日期显示
|
|
* @param {string} dateStr - YYYY-MM-DD
|
|
* @returns {string} 如 "今天"、"昨天"、"3月1日"
|
|
*/
|
|
function getFriendlyDate(dateStr) {
|
|
var today = getTodayStr()
|
|
if (dateStr === today) return '今天'
|
|
|
|
var yesterday = new Date()
|
|
yesterday.setDate(yesterday.getDate() - 1)
|
|
if (dateStr === formatDate(yesterday)) return '昨天'
|
|
|
|
var d = new Date(dateStr.replace(/-/g, '/'))
|
|
return (d.getMonth() + 1) + '月' + d.getDate() + '日'
|
|
}
|
|
|
|
/**
|
|
* 日期字符串替换 - 为 .
|
|
*/
|
|
function dateToDot(dateStr) {
|
|
return (dateStr || '').replace(/-/g, '.')
|
|
}
|
|
|
|
/**
|
|
* 获取日期显示 X月X日
|
|
*/
|
|
function getDateDisplay(date) {
|
|
date = date || new Date()
|
|
return (date.getMonth() + 1) + '月' + date.getDate() + '日'
|
|
}
|
|
|
|
/**
|
|
* 节流函数
|
|
*/
|
|
function throttle(fn, delay) {
|
|
var timer = null
|
|
return function () {
|
|
if (timer) return
|
|
var args = arguments
|
|
var context = this
|
|
timer = setTimeout(function () {
|
|
fn.apply(context, args)
|
|
timer = null
|
|
}, delay)
|
|
}
|
|
}
|
|
|
|
module.exports = {
|
|
formatTime,
|
|
padZero,
|
|
formatDate,
|
|
getWeekDay,
|
|
getTodayStr,
|
|
getFriendlyDate,
|
|
dateToDot,
|
|
getDateDisplay,
|
|
throttle
|
|
}
|