Timeline
-
+
Times are local.
+
@@ -421,4 +443,11 @@ loadStatusData(loading);
.small-padding-bottom {
padding-bottom: 8px;
}
+
+.local-time-message {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ padding-bottom: 12px;
+}
diff --git a/site/frontend/src/utils/formatting.ts b/site/frontend/src/utils/formatting.ts
index 16e5fdf96..30eb1e520 100644
--- a/site/frontend/src/utils/formatting.ts
+++ b/site/frontend/src/utils/formatting.ts
@@ -20,10 +20,25 @@ export function formatSecondsAsDuration(time: number): string {
return s;
}
-// Takes a date like `2025-09-10T08:22:47.161348Z` -> `"2025-09-10 08:22:47"`
+export const DATE_FMT_KEY = "__rustc-perf-user-date-fmt-preference__";
+// Date formats taken from https://date-fns.org/v4.1.0/docs/format
+export const DATE_FMT_24HR = "yyyy-MM-dd HH:mm:ss";
+export const DATE_FMT_12HR = "yyyy-MM-dd hh:mm:ss a";
+
+export function setDateFmt(dateFmt: string) {
+ window.localStorage.setItem(DATE_FMT_KEY, dateFmt);
+}
+
+export function getDateFmt() {
+ return window.localStorage.getItem(DATE_FMT_KEY) ?? DATE_FMT_24HR;
+}
+
+// Takes a date like `2025-09-10T08:22:47.161348Z` and formats it according to
+// the user preference stored in local storage (either 12 hour or 24 hour format).
export function formatISODate(dateString?: string): string {
if (dateString) {
- return format(parseISO(dateString), "yyyy-MM-dd HH:mm:ss");
+ const dateFmt = getDateFmt();
+ return format(parseISO(dateString), dateFmt);
}
return "";
}