更新
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
export function calculateTimestamp(timestamp: number): string {
|
||||
const todayZero = new Date().setHours(0, 0, 0, 0);
|
||||
const thisYear = new Date(
|
||||
new Date().getFullYear(),
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
).getTime();
|
||||
const target = new Date(timestamp*1000);
|
||||
|
||||
const oneDay = 24 * 60 * 60 * 1000;
|
||||
const oneWeek = 7 * oneDay;
|
||||
|
||||
const diff = todayZero - target.getTime();
|
||||
|
||||
function formatNum(num: number): string {
|
||||
return num < 10 ? '0' + num : num.toString();
|
||||
}
|
||||
|
||||
if (diff <= 0) {
|
||||
// today, only display hour:minute
|
||||
return `${formatNum(target.getHours())}:${formatNum(target.getMinutes())}`;
|
||||
} else if (diff <= oneDay) {
|
||||
// yesterday, display yesterday:hour:minute
|
||||
return `昨天 ${formatNum(
|
||||
target.getHours(),
|
||||
)}:${formatNum(target.getMinutes())}`;
|
||||
} else if (diff <= oneWeek - oneDay) {
|
||||
// Within a week, display weekday hour:minute
|
||||
const weekdays = [
|
||||
'星期日',
|
||||
'星期一',
|
||||
'星期二',
|
||||
'星期三',
|
||||
'星期四',
|
||||
'星期五',
|
||||
'星期六',
|
||||
];
|
||||
const weekday = weekdays[target.getDay()];
|
||||
return `${weekday} ${formatNum(
|
||||
target.getHours(),
|
||||
)}:${formatNum(target.getMinutes())}`;
|
||||
} else if (target.getTime() >= thisYear) {
|
||||
// Over a week, within this year, display mouth/day hour:minute
|
||||
return `${target.getMonth() + 1}月${target.getDate()}日 ${formatNum(
|
||||
target.getHours(),
|
||||
)}:${formatNum(target.getMinutes())}`;
|
||||
} else {
|
||||
// Not within this year, display year/mouth/day hour:minute
|
||||
return `${target.getFullYear()}年${
|
||||
target.getMonth() + 1
|
||||
}月${target.getDate()}日 ${formatNum(target.getHours())}:${formatNum(
|
||||
target.getMinutes(),
|
||||
)}`;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user