diff --git a/frontend/src/components/common/DateRangePicker.vue b/frontend/src/components/common/DateRangePicker.vue
index be641f9b..4fce029f 100644
--- a/frontend/src/components/common/DateRangePicker.vue
+++ b/frontend/src/components/common/DateRangePicker.vue
@@ -59,7 +59,7 @@
@@ -85,7 +85,7 @@
type="date"
v-model="localEndDate"
:min="localStartDate"
- :max="today"
+ :max="tomorrow"
class="date-picker-input"
@change="onDateChange"
/>
@@ -144,6 +144,14 @@ const today = computed(() => {
return `${year}-${month}-${day}`
})
+// Tomorrow's date - used for max date to handle timezone differences
+// When user is in a timezone behind the server, "today" on server might be "tomorrow" locally
+const tomorrow = computed(() => {
+ const d = new Date()
+ d.setDate(d.getDate() + 1)
+ return formatDateToString(d)
+})
+
// Helper function to format date to YYYY-MM-DD using local timezone
const formatDateToString = (date: Date): string => {
const year = date.getFullYear()
diff --git a/frontend/src/views/admin/UsageView.vue b/frontend/src/views/admin/UsageView.vue
index 85a748f4..ac5d1e05 100644
--- a/frontend/src/views/admin/UsageView.vue
+++ b/frontend/src/views/admin/UsageView.vue
@@ -888,13 +888,17 @@ const formatLocalDate = (date: Date): string => {
}
// Initialize date range immediately
+// Use tomorrow as end date to handle timezone differences between client and server
+// e.g., when server is in Asia/Shanghai and client is in America/Chicago
const now = new Date()
+const tomorrow = new Date(now)
+tomorrow.setDate(tomorrow.getDate() + 1)
const weekAgo = new Date(now)
weekAgo.setDate(weekAgo.getDate() - 6)
// Date range state
const startDate = ref(formatLocalDate(weekAgo))
-const endDate = ref(formatLocalDate(now))
+const endDate = ref(formatLocalDate(tomorrow))
const filters = ref({
user_id: undefined,
@@ -1215,12 +1219,14 @@ const resetFilters = () => {
end_date: undefined
}
granularity.value = 'day'
- // Reset date range to default (last 7 days)
+ // Reset date range to default (last 7 days, with tomorrow as end to handle timezone differences)
const now = new Date()
+ const tomorrowDate = new Date(now)
+ tomorrowDate.setDate(tomorrowDate.getDate() + 1)
const weekAgo = new Date(now)
weekAgo.setDate(weekAgo.getDate() - 6)
startDate.value = formatLocalDate(weekAgo)
- endDate.value = formatLocalDate(now)
+ endDate.value = formatLocalDate(tomorrowDate)
filters.value.start_date = startDate.value
filters.value.end_date = endDate.value
pagination.value.page = 1