Fix: gunakan Intl.DateTimeFormat dengan timezone Asia/Jakarta untuk konsistensi di semua browser dan server
This commit is contained in:
@@ -842,10 +842,18 @@
|
||||
setInterval(updateRealtimeStatus, 1000);
|
||||
|
||||
// Helper function untuk mendapatkan tanggal hari ini dalam timezone Indonesia (UTC+7)
|
||||
// Menggunakan Intl.DateTimeFormat untuk mendapatkan tanggal yang konsisten di semua browser
|
||||
function getTodayIndonesia() {
|
||||
const now = new Date();
|
||||
const indonesiaTime = new Date(now.getTime() + (7 * 60 * 60 * 1000)); // UTC+7
|
||||
return indonesiaTime.toISOString().split('T')[0];
|
||||
// Format tanggal dalam timezone Asia/Jakarta (UTC+7)
|
||||
const formatter = new Intl.DateTimeFormat('en-CA', {
|
||||
timeZone: 'Asia/Jakarta',
|
||||
year: 'numeric',
|
||||
month: '2-digit',
|
||||
day: '2-digit'
|
||||
});
|
||||
// Format: YYYY-MM-DD
|
||||
return formatter.format(now);
|
||||
}
|
||||
|
||||
// Init
|
||||
|
||||
@@ -20,10 +20,18 @@ import {
|
||||
} from './charts.js';
|
||||
|
||||
// Helper function untuk mendapatkan tanggal hari ini dalam timezone Indonesia (UTC+7)
|
||||
// Menggunakan Intl.DateTimeFormat untuk mendapatkan tanggal yang konsisten di semua browser
|
||||
function getTodayIndonesia() {
|
||||
const now = new Date();
|
||||
const indonesiaTime = new Date(now.getTime() + (7 * 60 * 60 * 1000)); // UTC+7
|
||||
return indonesiaTime.toISOString().split('T')[0];
|
||||
// Format tanggal dalam timezone Asia/Jakarta (UTC+7)
|
||||
const formatter = new Intl.DateTimeFormat('en-CA', {
|
||||
timeZone: 'Asia/Jakarta',
|
||||
year: 'numeric',
|
||||
month: '2-digit',
|
||||
day: '2-digit'
|
||||
});
|
||||
// Format: YYYY-MM-DD
|
||||
return formatter.format(now);
|
||||
}
|
||||
|
||||
// State akan di-set ke hari ini saat DOMContentLoaded
|
||||
@@ -76,10 +84,15 @@ async function getLastAvailableDate() {
|
||||
|
||||
// Jika tidak ada data kemarin, cek 7 hari terakhir (gunakan timezone Indonesia UTC+7)
|
||||
const now = new Date();
|
||||
const indonesiaTime = new Date(now.getTime() + (7 * 60 * 60 * 1000)); // UTC+7
|
||||
const formatter = new Intl.DateTimeFormat('en-CA', {
|
||||
timeZone: 'Asia/Jakarta',
|
||||
year: 'numeric',
|
||||
month: '2-digit',
|
||||
day: '2-digit'
|
||||
});
|
||||
for (let i = 2; i <= 7; i++) {
|
||||
const prevDate = new Date(indonesiaTime.getTime() - (i * 24 * 60 * 60 * 1000));
|
||||
const prevDateStr = prevDate.toISOString().split('T')[0];
|
||||
const prevDate = new Date(now.getTime() - (i * 24 * 60 * 60 * 1000));
|
||||
const prevDateStr = formatter.format(prevDate);
|
||||
const prevData = await apiGetSummary({ date: prevDateStr });
|
||||
|
||||
console.log(`[Dashboard] getLastAvailableDate - ${i} days ago (${prevDateStr}) data:`, prevData);
|
||||
|
||||
@@ -94,8 +94,14 @@ class RealtimeManager {
|
||||
// Struktur response setelah di-unwrap: { total_count_today, total_amount_today, by_gate, by_category }
|
||||
// Gunakan timezone Indonesia UTC+7 untuk mendapatkan tanggal lokal yang benar
|
||||
const now = new Date();
|
||||
const indonesiaTime = new Date(now.getTime() + (7 * 60 * 60 * 1000)); // UTC+7
|
||||
const today = indonesiaTime.toISOString().split('T')[0];
|
||||
// Format tanggal dalam timezone Asia/Jakarta (UTC+7)
|
||||
const formatter = new Intl.DateTimeFormat('en-CA', {
|
||||
timeZone: 'Asia/Jakarta',
|
||||
year: 'numeric',
|
||||
month: '2-digit',
|
||||
day: '2-digit'
|
||||
});
|
||||
const today = formatter.format(now);
|
||||
const snapshot = await apiGetRealtimeSnapshot({
|
||||
date: today,
|
||||
location_code: '' // bisa diambil dari state dashboard jika perlu
|
||||
|
||||
Reference in New Issue
Block a user