添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

moment 中文官网地址:http://momentjs.cn

时间处理函数将结合ts的语法糖,对 moment中的方法进行二次封装,使用更加简单快捷,代码如有更简单的的写法,欢迎讨论,交流,学习。直接上代码......

import moment from 'moment'
 * 格式化日期,返回字符串或 Date 对象
 * @param {string | Date} date -字符串或 Date 对象
 * @param {boolean} isDisplayTime 时间大于3天时是否显示时分
 * @returns {string} - 字符串或 Date 对象
export const formatDate = (date : string | Date, isDisplayTime : boolean = false) : string | Date => {
	const original = moment(date)
	// 判断时间大小
	const isTime = moment().isBefore(original)
	const isBeforeText = isTime ? '后' : '前'
	const secondsAgo = Math.abs(moment().diff(original, 'seconds'))
	if (secondsAgo < 60) {
		return `${secondsAgo}秒${isBeforeText}`
	const minutesAgo = Math.abs(moment().diff(original, 'minutes'))
	if (minutesAgo < 60) {
		return `${minutesAgo}分钟${isBeforeText}`
	const hoursAgo = Math.abs(moment().diff(original, 'hours'))
	if (hoursAgo < 24) {
		return `${hoursAgo}小时${isBeforeText}`
	const daysAgo = Math.abs(moment().diff(original, 'days'))
	// 判断是否在今年内
	const isYears = moment(date).isSame(new Date(), 'year')
	if (daysAgo <= 3) {
		return `${daysAgo}天${isBeforeText}`
	} else if (daysAgo > 3 && isYears) {
		return isDisplayTime ? original.format('MM/DD HH:mm') : original.format('MM/DD')
	} else {
		return original.format('YYYY/MM/DD')
 * 检查的日期是否在指定的时间范围内
 * @param {string} start - 开始日期
 * @param {string} end - 结束日期
 * @param {string} [check=moment()] - 指定时间,默认为当前时间
 * @returns {boolean} - 返回布尔值
export const isTimeBetween = (start : string, end : string, check : string = moment().format("YYYY-MM-DD HH:mm:ss")) : boolean => {
	const [momentCheck, momentStart, momentEnd] = [check, start, end].map(date => moment(date, "YYYY-MM-DD HH:mm:ss"));
	return momentCheck.isBetween(momentStart, momentEnd);
 * 根据指定的日期和相差的天/秒/分/小时/周/月/年数获取另外一个日期
 * @param {string} [dateStr=moment()] - 指定的日期字符串,默认为当前时间
 * @param {number} diffValue - 相差的天/秒/分/小时/周/月/年数
 * @param {string} unit - 相差的单位(days, seconds, minutes, hours, weeks, months, years)
 * @param {string} format - 返回日期的格式,默认为 "YYYY-MM-DD"
 * @returns {string} - 格式化的新日期字符串
export const getDateByDiff = (
	dateStr : string = moment().format(),
	diffValue : number,
	unit : "days" | "seconds" | "minutes" | "hours" | "weeks" | "months" | 'years',
	format : string = "YYYY-MM-DD"
) : string => {
	const momentDate = moment(dateStr, "YYYY-MM-DD HH:mm:ss");
	const newMomentDate = momentDate.add(diffValue, unit);
	return unit === "seconds" ||
		unit === "minutes" ||
		unit === "hours"
		? newMomentDate.format("YYYY-MM-DD HH:mm:ss")
		: newMomentDate.format(format);
 * 计算两个日期之间的时间差
 * @param {string} startDateStr - 开始日期
 * @param {string} endDateStr - 结束日期
 * @param {moment.unitOfTime.Diff} unit - 时间单位(days, seconds, minutes, hours, weeks, months, years)
 * @returns {number} - 两日期相差的时间数
export const getTimeDiffBetweenDates = (startDateStr : string, endDateStr : string, unit : moment.unitOfTime.Diff) : number => {
	const startDate = moment(startDateStr);
	const endDate = moment(endDateStr);
	const diff = endDate.diff(startDate, unit);
	return diff;
};

如果没有安装 moment 模块,请你自行安装。

1、发布新帖子,每发布一条帖子可获得20个经验,每天最多可获取200个经验;

2、发布新回复,每发布一条回复可获得10个经验,每天最多可获取200个经验;

3、发布的帖子被管理员设置为精华帖,每被加精一次可获得10个经验,无上限;

4、发布帖子被回复一条,加2个经验,无上限;

5、发布帖子被点赞一个或发布评论被点赞加5个经验,无上限;

6、论坛首页大神积分排行榜,统计90天以内获取的累积经验值进行排序。

7、技术社区经验和官方商城用户经验同步,累计经验值会提升商城会员等级,购买官方商城产品享受对应会员等级折扣