Hours / index.html
nick5363's picture
Update index.html
bfc1739 verified
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Forex Market Hours (Centered + Vietnam)</title>
<style>
body {
background-color: #0f0f0f;
color: white;
font-family: sans-serif;
display: flex;
flex-direction: column;
align-items: center;
padding: 20px;
}
h2 {
color: #00ccff;
margin-bottom: 10px;
}
.controls {
text-align: center;
margin-bottom: 20px;
}
select {
padding: 5px 10px;
font-size: 14px;
border-radius: 5px;
}
table {
width: 100%;
max-width: 415px;
border-collapse: collapse;
}
th, td {
border: 1px solid #333;
padding: 8px;
text-align: center;
}
th {
background-color: #222;
}
tr:nth-child(even) {
background-color: #1a1a1a;
}
#localtime {
margin-bottom: 10px;
}
</style>
</head>
<body>
<div class="controls">
<label for="tz">Select Timezone:</label>
<select id="tz">
<option value="America/Los_Angeles">Los Angeles</option>
<option value="America/New_York">New York</option>
<option value="Europe/London">London</option>
<option value="Asia/Tokyo">Tokyo</option>
<option value="Australia/Sydney">Sydney</option>
<option value="Asia/Ho_Chi_Minh">Vietnam</option>
</select>
</div>
<p id="localtime"></p>
<table>
<thead>
<tr>
<th>Center</th>
<th>Status</th>
<th>Time Left</th>
<th>Opens In</th>
<th>Open</th>
<th>Close</th>
</tr>
</thead>
<tbody id="session-table"></tbody>
</table>
<script>
const sessions = [
{ center: "Sydney", tz: "Australia/Sydney", open: "08:00", close: "16:00" },
{ center: "Tokyo", tz: "Asia/Tokyo", open: "09:00", close: "17:00" },
{ center: "London", tz: "Europe/London", open: "08:00", close: "16:00" },
{ center: "New York", tz: "America/New_York", open: "09:30", close: "16:00" }
];
function updateSessions() {
const userTZ = document.getElementById("tz").value;
const now = new Date();
document.getElementById("localtime").innerHTML = "Time in <b>" + userTZ + "</b>: <b>" +
now.toLocaleTimeString("en-US", { timeZone: userTZ }) + "</b>";
const tbody = document.getElementById("session-table");
tbody.innerHTML = "";
sessions.forEach(s => {
const nowInTZ = new Date(new Date().toLocaleString("en-US", { timeZone: s.tz }));
const parseTime = (timeStr) => {
let [time, modifier] = timeStr.split(' ');
let [hours, minutes] = time.split(':').map(Number);
if (modifier === 'PM' && hours < 12) {
hours += 12;
}
if (modifier === 'AM' && hours === 12) {
hours = 0;
}
return { hours, minutes };
};
const openTime = parseTime(s.open);
const closeTime = parseTime(s.close);
const open = new Date(nowInTZ);
open.setHours(openTime.hours, openTime.minutes, 0, 0);
const close = new Date(nowInTZ);
close.setHours(closeTime.hours, closeTime.minutes, 0, 0);
const today = nowInTZ.getDay();
const isWeekend = today === 0 || today === 6;
const isOpen = !isWeekend && nowInTZ >= open && nowInTZ < close;
const timeLeft = (isOpen && !isWeekend) ? new Date(close - nowInTZ).toISOString().substr(11, 8) : "-";
let opensIn = "-";
if (!isOpen && !isWeekend) {
if (nowInTZ > close) open.setDate(open.getDate() + 1);
opensIn = new Date(open - nowInTZ).toISOString().substr(11, 8);
}
const statusColor = isOpen ? "#00cc66" : "#999";
tbody.innerHTML += `
<tr>
<td>${s.center}</td>
<td style="color:${statusColor}; font-weight:bold;">${isOpen ? "Open" : "Closed"}</td>
<td>${timeLeft}</td>
<td>${opensIn}</td>
<td>${s.open}</td>
<td>${s.close}</td>
</tr>
`;
});
}
setInterval(updateSessions, 1000);
</script>
</body>
</html>