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);
|
setInterval(updateRealtimeStatus, 1000);
|
||||||
|
|
||||||
// Helper function untuk mendapatkan tanggal hari ini dalam timezone Indonesia (UTC+7)
|
// 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() {
|
function getTodayIndonesia() {
|
||||||
const now = new Date();
|
const now = new Date();
|
||||||
const indonesiaTime = new Date(now.getTime() + (7 * 60 * 60 * 1000)); // UTC+7
|
// Format tanggal dalam timezone Asia/Jakarta (UTC+7)
|
||||||
return indonesiaTime.toISOString().split('T')[0];
|
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
|
// Init
|
||||||
|
|||||||
@@ -20,10 +20,18 @@ import {
|
|||||||
} from './charts.js';
|
} from './charts.js';
|
||||||
|
|
||||||
// Helper function untuk mendapatkan tanggal hari ini dalam timezone Indonesia (UTC+7)
|
// 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() {
|
function getTodayIndonesia() {
|
||||||
const now = new Date();
|
const now = new Date();
|
||||||
const indonesiaTime = new Date(now.getTime() + (7 * 60 * 60 * 1000)); // UTC+7
|
// Format tanggal dalam timezone Asia/Jakarta (UTC+7)
|
||||||
return indonesiaTime.toISOString().split('T')[0];
|
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
|
// 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)
|
// Jika tidak ada data kemarin, cek 7 hari terakhir (gunakan timezone Indonesia UTC+7)
|
||||||
const now = new Date();
|
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++) {
|
for (let i = 2; i <= 7; i++) {
|
||||||
const prevDate = new Date(indonesiaTime.getTime() - (i * 24 * 60 * 60 * 1000));
|
const prevDate = new Date(now.getTime() - (i * 24 * 60 * 60 * 1000));
|
||||||
const prevDateStr = prevDate.toISOString().split('T')[0];
|
const prevDateStr = formatter.format(prevDate);
|
||||||
const prevData = await apiGetSummary({ date: prevDateStr });
|
const prevData = await apiGetSummary({ date: prevDateStr });
|
||||||
|
|
||||||
console.log(`[Dashboard] getLastAvailableDate - ${i} days ago (${prevDateStr}) data:`, prevData);
|
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 }
|
// 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
|
// Gunakan timezone Indonesia UTC+7 untuk mendapatkan tanggal lokal yang benar
|
||||||
const now = new Date();
|
const now = new Date();
|
||||||
const indonesiaTime = new Date(now.getTime() + (7 * 60 * 60 * 1000)); // UTC+7
|
// Format tanggal dalam timezone Asia/Jakarta (UTC+7)
|
||||||
const today = indonesiaTime.toISOString().split('T')[0];
|
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({
|
const snapshot = await apiGetRealtimeSnapshot({
|
||||||
date: today,
|
date: today,
|
||||||
location_code: '' // bisa diambil dari state dashboard jika perlu
|
location_code: '' // bisa diambil dari state dashboard jika perlu
|
||||||
|
|||||||
Reference in New Issue
Block a user