Authored by yyq

date fomate

... ... @@ -20,7 +20,7 @@ import ArticleItemIntro from './article-item-intro';
import ArticleItemComment from './article-item-comment';
import ArticleResource from './article-resource-item';
import YAS from 'utils/yas-constants';
import dayjs from 'dayjs';
import dayjs from 'utils/day';
import {createNamespacedHelpers} from 'vuex';
const {mapState} = createNamespacedHelpers('article');
... ...
import {isNull, isUndefined} from 'lodash';
class Day {
constructor(date) {
if (isNull(date) || isUndefined(date)) {
this._date = new Date();
} else {
this._date = new Date(date);
}
this._init();
}
_init() {
const { _date } = this;
this._date_y = _date.getFullYear();
this._date_M = _date.getMonth() + 1;
this._date_D = _date.getDate();
this._date_W = _date.getDay();
this._date_H = _date.getHours();
this._date_m = _date.getMinutes();
this._date_s = _date.getSeconds();
this._date_ms = _date.getMilliseconds();
}
_get(type) {
return this[`_date_${type}`];
}
_fix(num, length) {
num = num + '';
return num.length < length ? ((new Array(length + 1)).join('0') + num).slice(-length) : num;
}
year() {
return this._get('y');
}
month() {
return this._get('M');
}
day() {
return this._get('W');
}
date() {
return this._get('D');
}
hour() {
return this._get('H');
}
minute() {
return this._get('m');
}
second() {
return this._get('s');
}
millisecond() {
return this._get('ms');
}
fromNow() {
const date = this._date.getTime();
const today = new Date(new Date().toLocaleDateString()).getTime();
const days = Math.floor((today - date) / (24 * 60 * 60 * 1000)) + 1;
if (days > 5) {
return `${this.year()}-${this._fix(this.month(), 2)}-${this._fix(this.day(), 2)}`;
} else if (days > 2) {
return '2天前';
} else if (days > 1) {
return '前天';
} else if (days > 0) {
return '昨天';
} else {
return `${this.hour()}:${this.minute()}`;
}
}
}
function day(date) {
return new Day(date);
}
export default day;
... ...