Get 1000000 0FP0EXP Token to remove widget entirely!



source code
old source code

get any 0FP0EXP Token to automatically turn off or 100000 0FP0EXP Token to remove this JavaScript Mining.

Get 500000 0FP0EXP Token to remove my NFTS advertisements!

Get 400000 0FP0EXP Token to remove this donation notification!

get 300000 0FP0EXP Token to remove this paypal donation.

View My Stats

Need referral links?

get 200000 0FP0EXP Token to remove my personal ADS.

word number: 2374

Time: 2026-04-13 07:48:43 +0800

User: You said

I would like to build all about date and time in just html css js.


Gemini: Here is a complete, self-contained guide to building a comprehensive Date and Time dashboard using only HTML, CSS, and JavaScript.

This project will include:

A Live Digital Clock (with seconds).

Current Date display (Day, Month, Year).

A dynamic Greetings message based on the time of day.

A “Time Until” countdown to a specific future date (e.g., New Year’s).

  1. The Structure (HTML)

We will use a clean container layout to hold the different widgets.

HTML <!DOCTYPE html>

Date & Time Dashboard
Loading...
00:00:00
Loading Date...

Countdown to New Year

00 Days
00 Hours
00 Mins
00 Secs
  1. The Styling (CSS)

This CSS uses a modern, dark theme with a gradient background and centering (Flexbox) to make it look professional.

CSS /* style.css */

body { background: linear-gradient(135deg, #1e3c72, #2a5298); height: 100vh; display: flex; justify-content: center; align-items: center; color: white; }

.container { text-align: center; background: rgba(255, 255, 255, 0.1); padding: 3rem; border-radius: 20px; backdrop-filter: blur(10px); box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3); width: 90%; max-width: 600px; }

/* Greeting */ .greeting { font-size: 1.5rem; margin-bottom: 1rem; color: #a8d0e6; text-transform: uppercase; letter-spacing: 2px; }

/* Clock */ .time { font-size: 5rem; font-weight: bold; text-shadow: 2px 2px 10px rgba(0,0,0,0.2); margin-bottom: 0.5rem; }

.date { font-size: 1.2rem; color: #e0e0e0; margin-bottom: 2rem; }

/* Countdown */ .countdown-container { border-top: 1px solid rgba(255,255,255,0.2); padding-top: 1.5rem; }

.countdown-container h3 { margin-bottom: 1rem; font-weight: 400; }

.countdown { display: flex; justify-content: center; gap: 1.5rem; }

.countdown div { display: flex; flex-direction: column; font-size: 0.8rem; color: #ccc; }

.countdown span { font-size: 2rem; font-weight: bold; color: #fff; }

  1. The Logic (JavaScript)

This script handles the logic for the clock, the date formatting, the greeting based on the hour, and the countdown math.

JavaScript // script.js

function updateDashboard() { const now = new Date();

// --- 1. CLOCK & DATE ---

// Extract time components
let hours = now.getHours();
const minutes = String(now.getMinutes()).padStart(2, '0');
const seconds = String(now.getSeconds()).padStart(2, '0');

// Determine AM/PM (Optional, remove if you want 24h format)
// const ampm = hours >= 12 ? 'PM' : 'AM';
// hours = hours % 12;
// hours = hours ? hours : 12; // the hour '0' should be '12'

// Format: HH:MM:SS
// Note: Remove padStart if using AM/PM logic above for single digit hours
const timeString = `${String(hours).padStart(2, '0')}:${minutes}:${seconds}`; 
document.getElementById('time').textContent = timeString;

// Date Format: Monday, October 2, 2023
const options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
const dateString = now.toLocaleDateString('en-US', options);
document.getElementById('date').textContent = dateString;


// --- 2. DYNAMIC GREETING ---
const greetingElement = document.getElementById('greeting');
const hour = now.getHours();

if (hour < 12) {
    greetingElement.textContent = "Good Morning";
} else if (hour < 18) {
    greetingElement.textContent = "Good Afternoon";
} else {
    greetingElement.textContent = "Good Evening";
} }

function updateCountdown() { // — 3. COUNTDOWN TO NEXT YEAR — const currentYear = new Date().getFullYear(); const nextYear = new Date(January 1, ${currentYear + 1} 00:00:00); const currentTime = new Date();

const diff = nextYear - currentTime;

const d = Math.floor(diff / 1000 / 60 / 60 / 24);
const h = Math.floor((diff / 1000 / 60 / 60) % 24);
const m = Math.floor((diff / 1000 / 60) % 60);
const s = Math.floor((diff / 1000) % 60);

document.getElementById('days').textContent = d;
document.getElementById('hours').textContent = String(h).padStart(2, '0');
document.getElementById('minutes').textContent = String(m).padStart(2, '0');
document.getElementById('seconds').textContent = String(s).padStart(2, '0'); }

// Update the clock immediately and then every second setInterval(updateDashboard, 1000); setInterval(updateCountdown, 1000);

// Run once on load to avoid 1-second delay updateDashboard(); updateCountdown();

How to use this:

Create a folder on your computer.

Create three files: index.html, style.css, and script.js.

Paste the code above into their respective files.

Open index.html in your web browser.

Would you like me to show you how to add a “Stopwatch” feature to this dashboard as well?


User: You said

Yes but before that, how about an alarm with sound? The sound I prefer initially is built-in or not have to point to an audio file.


Gemini: That is a smart constraint. Managing audio file paths (like ./sound.mp3) can be annoying because browsers often block auto-playing audio files, and broken links break the feature.

Instead, we will use the Web Audio API. This allows JavaScript to create an “Oscillator”—basically a synthesizer that generates a beep tone mathematically. No files required.

Here is how to add the Alarm feature to your existing files.

  1. Update HTML (index.html)

Add this block inside the .container div, right below the Countdown section.

HTML

Set Alarm

Alarm is OFF

  1. Update CSS (style.css)

Add these styles to the bottom of your CSS file to make the input and buttons look good.

CSS /* Alarm Styles */ .alarm-container { border-top: 1px solid rgba(255,255,255,0.2); margin-top: 1.5rem; padding-top: 1.5rem; }

.alarm-inputs { display: flex; justify-content: center; gap: 10px; margin: 10px 0; }

input[type=”time”] { padding: 10px; border-radius: 5px; border: none; font-size: 1rem; background: rgba(255, 255, 255, 0.9); }

button { padding: 10px 20px; border-radius: 5px; border: none; cursor: pointer; font-weight: bold; transition: background 0.3s; }

#set-alarm-btn { background-color: #4CAF50; /* Green */ color: white; }

#set-alarm-btn.active { background-color: #f44336; /* Red (for cancel) */ }

.alarm-status { font-size: 0.9rem; color: #ffd700; height: 1.2rem; /* Reserve space */ }

/* Stop Alarm Button (pulsing red) */ .stop-btn { margin-top: 15px; background-color: #ff0000; color: white; font-size: 1.2rem; animation: pulse 1s infinite; }

.hidden { display: none; }

@keyframes pulse { 0% { transform: scale(1); } 50% { transform: scale(1.05); } 100% { transform: scale(1); } }

  1. Update JavaScript (script.js)

Add this code to the bottom of your JS file. This handles the sound generation and the logic to trigger it.

JavaScript // — ALARM LOGIC —

let alarmTime = null; let alarmTimeout = null; let audioCtx = null; let oscillator = null; let alarmInterval = null; // To repeat the beep

function toggleAlarm() { const input = document.getElementById(‘alarm-time-input’); const btn = document.getElementById(‘set-alarm-btn’); const status = document.getElementById(‘alarm-status’);

if (alarmTime) {
    // If alarm is already set, clear it (Cancel)
    alarmTime = null;
    btn.textContent = "Set Alarm";
    btn.classList.remove('active');
    status.textContent = "Alarm is OFF";
    stopAlarmSound(); // Stop sound if it's currently ringing
} else {
    // Set the alarm
    if (!input.value) {
        alert("Please select a time first!");
        return;
    }
    alarmTime = input.value;
    btn.textContent = "Cancel Alarm";
    btn.classList.add('active');
    status.textContent = `Alarm set for ${alarmTime}`;
} }

// Function to generate the “Beep” sound using Web Audio API function playBeep() { // Create Audio Context only when needed (browsers require interaction) if (!audioCtx) { audioCtx = new (window.AudioContext || window.webkitAudioContext)(); }

// Create an oscillator (the sound generator)
oscillator = audioCtx.createOscillator();
const gainNode = audioCtx.createGain();

oscillator.type = 'square'; // 'square' sounds more like an alarm than 'sine'
oscillator.frequency.setValueAtTime(440, audioCtx.currentTime); // 440Hz (A4)

// Connect parts: Oscillator -> Volume(Gain) -> Speakers
oscillator.connect(gainNode);
gainNode.connect(audioCtx.destination);

// Play sound
oscillator.start(); }

function startAlarmRinging() { const stopBtn = document.getElementById(‘stop-alarm-btn’); stopBtn.classList.remove(‘hidden’); // Show the big STOP button

// Play a beep every 500ms
playBeep(); 
// Stop the individual beep after 200ms
setTimeout(() => { if(oscillator) oscillator.stop(); }, 200);

// Loop the beep
alarmInterval = setInterval(() => {
    playBeep();
    setTimeout(() => { if(oscillator) oscillator.stop(); }, 200);
}, 500); }

function stopAlarmSound() { // Stop logic if (alarmInterval) clearInterval(alarmInterval); if (oscillator) { try { oscillator.stop(); } catch(e){} // Ignore error if already stopped }

// Hide STOP button and reset
document.getElementById('stop-alarm-btn').classList.add('hidden');

// Optional: Auto-cancel the alarm logic so it doesn't ring tomorrow
alarmTime = null;
document.getElementById('set-alarm-btn').textContent = "Set Alarm";
document.getElementById('set-alarm-btn').classList.remove('active');
document.getElementById('alarm-status').textContent = "Alarm Cleared"; }

// — INTEGRATE INTO EXISTING CLOCK LOOP —

// We need to check the alarm every second. // Add this check inside your existing updateDashboard() function, // OR simpler: just set a separate interval here.

setInterval(() => { if (alarmTime) { const now = new Date(); // Format current time to HH:MM to match input value const currentHours = String(now.getHours()).padStart(2, ‘0’); const currentMinutes = String(now.getMinutes()).padStart(2, ‘0’); const currentTimeString = ${currentHours}:${currentMinutes}; const currentSeconds = now.getSeconds();

    // Check if times match AND it is the 0th second (so it triggers once)
    if (currentTimeString === alarmTime && currentSeconds === 0) {
        startAlarmRinging();
    }
} }, 1000);

How it works:

Oscillator: Instead of playing an mp3, the code creates a square wave frequency. This sounds like an old-school digital alarm clock.

Logic: It checks every second. If the system time matches your input time, it triggers startAlarmRinging.

The Loop: startAlarmRinging sets off a loop that plays a sound for 0.2 seconds, pauses, then plays again (beep… beep… beep).

Interaction: Browsers block audio if the user hasn’t clicked anything yet. Because the user has to click “Set Alarm” first, this satisfies the browser’s security requirement to allow sound later.

Would you like to move on to the Stopwatch now?


User: You said

Yes, but create a separate index.html, styles.css, and scripts.js for this stop watch.


Gemini: Here is a complete, standalone Stopwatch application. I have split it into the exact file names you requested (index.html, styles.css, and scripts.js).

To make it a fully functional stopwatch, I’ve also included a “Lap” feature, which is standard for stopwatches, allowing you to record specific intervals without stopping the main timer.

  1. The Structure (index.html)

This sets up the display for the time, the control buttons, and a list to hold recorded lap times.

HTML <!DOCTYPE html>

Stopwatch

Stopwatch

00:00:00.00
    1. The Styling (styles.css)

    I kept the styling consistent with a modern, dark-themed dashboard look. A crucial CSS trick used here is font-variant-numeric: tabular-nums; on the display, which prevents the numbers from “wiggling” left and right as they change.

    CSS /* styles.css */

    body { background: linear-gradient(135deg, #2b5876, #4e4376); height: 100vh; display: flex; justify-content: center; align-items: center; color: white; }

    .stopwatch-container { background: rgba(255, 255, 255, 0.1); padding: 3rem; border-radius: 20px; backdrop-filter: blur(10px); box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3); text-align: center; width: 90%; max-width: 500px; }

    h2 { color: #a8d0e6; text-transform: uppercase; letter-spacing: 2px; margin-bottom: 1.5rem; }

    .display { font-size: 4rem; font-weight: bold; margin-bottom: 2rem; /* This stops the numbers from jumping around as they change */ font-variant-numeric: tabular-nums; text-shadow: 2px 2px 10px rgba(0,0,0,0.2); }

    .controls { display: flex; justify-content: center; gap: 10px; margin-bottom: 2rem; }

    .btn { padding: 10px 20px; border: none; border-radius: 5px; font-size: 1rem; font-weight: bold; cursor: pointer; transition: all 0.2s; color: white; }

    .btn:disabled { opacity: 0.5; cursor: not-allowed; }

    /* Button Colors */ .start { background-color: #4CAF50; } .start:hover:not(:disabled) { background-color: #45a049; }

    .pause { background-color: #ff9800; } .pause:hover:not(:disabled) { background-color: #e68a00; }

    .lap { background-color: #2196F3; } .lap:hover:not(:disabled) { background-color: #0b7dda; }

    .reset { background-color: #f44336; } .reset:hover:not(:disabled) { background-color: #da190b; }

    /* Laps Section */ .laps-container { max-height: 200px; overflow-y: auto; border-top: 1px solid rgba(255, 255, 255, 0.2); padding-top: 1rem; }

    #lapsList { list-style: none; }

    #lapsList li { display: flex; justify-content: space-between; padding: 8px 10px; border-bottom: 1px solid rgba(255, 255, 255, 0.1); font-size: 1.1rem; font-variant-numeric: tabular-nums; }

    #lapsList li span:first-child { color: #a8d0e6; }

    1. The Logic (scripts.js)

    This handles the time calculation using Date.now(), which is much more accurate than relying on a browser’s basic setInterval timer (which can drift if the browser tab goes to sleep).

    JavaScript // scripts.js

    // State variables let startTime = 0; let elapsedTime = 0; let timerInterval; let running = false; let lapCount = 1;

    // DOM Elements const display = document.getElementById(‘display’); const startBtn = document.getElementById(‘startBtn’); const pauseBtn = document.getElementById(‘pauseBtn’); const lapBtn = document.getElementById(‘lapBtn’); const resetBtn = document.getElementById(‘resetBtn’); const lapsList = document.getElementById(‘lapsList’);

    // Format time to HH:MM:SS.ms function formatTime(time) { let hours = Math.floor(time / 3600000); let minutes = Math.floor((time % 3600000) / 60000); let seconds = Math.floor((time % 60000) / 1000); let milliseconds = Math.floor((time % 1000) / 10); // 2 digits for centiseconds

    // Pad with leading zeros
    return (
        String(hours).padStart(2, '0') + ':' +
        String(minutes).padStart(2, '0') + ':' +
        String(seconds).padStart(2, '0') + '.' +
        String(milliseconds).padStart(2, '0')
    ); }
    

    // Update the display function printTime() { elapsedTime = Date.now() - startTime; display.textContent = formatTime(elapsedTime); }

    // Button Functions function startTimer() { if (!running) { // Calculate when we started (accounting for past elapsed time if paused) startTime = Date.now() - elapsedTime;

        // Update display every 10 milliseconds
        timerInterval = setInterval(printTime, 10);
        running = true;
    
        // Manage button states
        startBtn.disabled = true;
        pauseBtn.disabled = false;
        lapBtn.disabled = false;
    } }
    

    function pauseTimer() { if (running) { clearInterval(timerInterval); running = false;

        // Manage button states
        startBtn.disabled = false;
        pauseBtn.disabled = true;
        lapBtn.disabled = true;
        startBtn.textContent = "Resume";
    } }
    

    function resetTimer() { clearInterval(timerInterval); running = false; elapsedTime = 0; lapCount = 1;

    display.textContent = "00:00:00.00";
    lapsList.innerHTML = ""; // Clear laps
    
    // Manage button states
    startBtn.disabled = false;
    pauseBtn.disabled = true;
    lapBtn.disabled = true;
    startBtn.textContent = "Start"; }
    

    function recordLap() { if (running) { const li = document.createElement(‘li’); const lapNumber = document.createElement(‘span’); const lapTime = document.createElement(‘span’);

        lapNumber.textContent = `Lap ${lapCount}`;
        lapTime.textContent = formatTime(elapsedTime);
    
        li.appendChild(lapNumber);
        li.appendChild(lapTime);
        
        // Add to top of list
        lapsList.insertBefore(li, lapsList.firstChild); 
        lapCount++;
    } }
    

    // Event Listeners startBtn.addEventListener(‘click’, startTimer); pauseBtn.addEventListener(‘click’, pauseTimer); resetBtn.addEventListener(‘click’, resetTimer); lapBtn.addEventListener(‘click’, recordLap);

    How to run it:

    Just like the previous step, put these three files in a folder together, ensure their names match exactly (index.html, styles.css, scripts.js), and open the HTML file in your browser.

    Would you like me to show you how to link this new Stopwatch page to your Date & Time Dashboard using a simple navigation menu so you can flip back and forth between them?