Skip to content

Commit 000e8fb

Browse files
committed
feat(): add humanize time format "past", and support future time for "relative"
1 parent c76030f commit 000e8fb

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

shared/datetime/src/humanizeTime.spec.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,20 @@ describe("humanizeTime", () => {
149149
expect(humanizeTime(m)).toBe(m.format("LL ah:mm"));
150150
});
151151

152+
it("show relative past time", function () {
153+
const pastMoment = moment().add(-5, "days");
154+
expect(humanizeTime(pastMoment, HumanizeTimeFormat.relative)).toBe(
155+
"5 天前"
156+
);
157+
});
158+
159+
it("show relative future time", function () {
160+
const futureMoment = moment().add(5, "days");
161+
expect(humanizeTime(futureMoment, HumanizeTimeFormat.relative)).toBe(
162+
"5 天后"
163+
);
164+
});
165+
152166
it("return null when given a nil", function () {
153167
expect(humanizeTime(undefined)).toBe(null);
154168
expect(humanizeTime(null)).toBe(null);

shared/datetime/src/humanizeTime.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ export enum HumanizeTimeFormat {
1111
full = "full",
1212
default = "default",
1313
relative = "relative",
14+
past = "past",
1415
future = "future",
1516
accurate = "accurate",
1617
auto = "auto",
@@ -95,7 +96,17 @@ export const humanizeTime = (
9596
case HumanizeTimeFormat.default:
9697
text = m.format(fDefault);
9798
break;
98-
case HumanizeTimeFormat.relative:
99+
case HumanizeTimeFormat.relative: {
100+
const diff = +m - +now;
101+
text =
102+
diff <= 0
103+
? moment.duration(diff).humanize(true)
104+
: i18n.t(`${NS_LIBS_DATETIME}:${K.FUTURE_AFTER}`, {
105+
time: moment.duration(diff).humanize(),
106+
});
107+
break;
108+
}
109+
case HumanizeTimeFormat.past:
99110
text = moment.duration(Math.min(+m - +now, 0)).humanize(true);
100111
break;
101112
case HumanizeTimeFormat.future:

0 commit comments

Comments
 (0)