🌐
50 React Coding Puzzles
  • 50 React Coding Puzzles
  • Contact
  • Reviews
  • Table of Contents
  • Introduction
  • 1 - Simple Counter App
  • 2 - Dynamic List of Items with Strikethrough
  • 3 - Color Picker with Hex Code Display
  • 4 - Password Strength Checker
  • 5 - Countdown Timer with Audio
  • 6 - Dynamic Movie List with Filtering and Sorting
  • 7 - Text Animation Component (Fade/Scroll)
  • 8 - Dynamically Generated Text Art
  • 9 - Meme Generator with Custom Text
  • 10 - "What Should I Eat?" Random Recipe Generator
  • 11 - Simple Quiz App with Multiple Choice
  • 12 - Unit Converter
  • 13 - Dynamic Image Gallery with Lightbox
  • 14 - Weather Widget with Temperature and Description
  • 15 - Contact Form with Email and Message Validation
  • 16 - Color Palette Generator
  • 17 - Drag-and-Drop Feature for Rearranging Items
  • 18 - Interactive Quiz with Dynamic Results and Feedback
  • 19 - To-Do List with Task Categorization
  • 20 - Note-Taking App with Markdown Support
  • 21 - Simple Calculator with Basic Operations
  • 22 - Word Scramble Game with Timer and Score
  • 23 - Number Guessing Game
  • 24 - Digital Clock with Time Zone Support
  • 25 - Interactive Time Zone Converter
  • 26 - Weather Forecast App with Location Detection
  • 27 - Real-Time Stock Ticker with Updates
  • 28 - Virtual Dice Roller with Multiple Dice
  • 29 - Responsive Navigation Menu with Dropdowns
  • 30 - Progress Bar for Loading or Task Completion
  • 31 - Modal Window for Alerts and Confirmations
  • 32 - Infinite Scroll for Loading More Content
  • 33 - Form Validation with Error Messages
  • 34 - Search Bar with Filtering and Suggestions
  • 35 - Drag-and-Drop File Upload
  • 36 - Interactive Color Picker with Sliders
  • 37 - Image Carousel with Autoplay
  • 38 - Rating System with Stars or Thumbs Up/Down
  • 39 - Comment Section with Nested Replies
  • 40 - Pagination for Long Lists of Data
  • 41 - Stopwatch app that tracks elapsed time
  • 42 - Responsive E-commerce Product Grid
  • 43 - Random Movie/Book Recommender
  • 44 - Kanban board for managing tasks with drag-and-drop
  • 45 - Chat application with real-time messaging using WebSockets
  • 46 - Calendar that displays events and allows scheduling
  • 47 - Tic-Tac-Toe Game
  • 48 - Hangman Game
  • 49 - Notes App
  • 50 - Expense Tracker
  • Afterword
  • Appendix
Powered by GitBook
On this page
  • Description
  • Algorithm
  • Classes
  • Code
  • Explanation
  • Possible Future Enhancements

25 - Interactive Time Zone Converter

Description

Create a React application that provides an interactive time zone converter. The converter should allow users to choose a reference time zone, display the current time in the reference time zone, and offer a list of other cities or time zones with their corresponding current times, updated dynamically.

Algorithm

  1. Create a state variable to store the reference time zone and current times.

  2. Define a function to get the current time in the reference time zone.

  3. Define a function to handle reference time zone selection.

  4. Define a function to update the current times in other cities or time zones.

  5. Render the time zone converter interface.

Classes

  • TimeZoneConverter: A component that represents the time zone converter interface.

  • ReferenceTimeZoneSelector: A component that represents the reference time zone selection menu.

  • CityTimeZoneList: A component that represents the list of cities or time zones with their corresponding current times.

Code

TimeZoneConverter.js

import React, { useState, useEffect } from 'react';
import ReferenceTimeZoneSelector from './ReferenceTimeZoneSelector';
import CityTimeZoneList from './CityTimeZoneList';

function TimeZoneConverter() {
  const [referenceTimeZone, setReferenceTimeZone] = useState('UTC');
  const [currentTimes, setCurrentTimes] = useState({});

  useEffect(() => {
    const intervalId = setInterval(() => {
      updateCurrentTimes();
    }, 1000);
    return () => clearInterval(intervalId);
  }, [referenceTimeZone]);

  const handleReferenceTimeZoneSelect = (timeZone) => {
    setReferenceTimeZone(timeZone);
  };

  const updateCurrentTimes = () => {
    const currentTimesObject = {};
    const cities = [
      { name: 'New York', timeZone: 'America/New_York' },
      { name: 'London', timeZone: 'Europe/London' },
      { name: 'Tokyo', timeZone: 'Asia/Tokyo' },
      // Add more cities or time zones as needed
    ];
    cities.forEach((city) => {
      currentTimesObject[city.name] = getCurrentTime(city.timeZone);
    });
    setCurrentTimes(currentTimesObject);
  };

  return (
    <div>
      <h2>Time Zone Converter</h2>
      <ReferenceTimeZoneSelector
        onTimeZoneSelect={handleReferenceTimeZoneSelect}
      />
      <CityTimeZoneList currentTimes={currentTimes} />
    </div>
  );
}

export default TimeZoneConverter;

ReferenceTimeZoneSelector.js

import React from 'react';

function ReferenceTimeZoneSelector({ onTimeZoneSelect }) {
  const timeZones = [
    { name: 'UTC', offset: 0 },
    { name: 'EST', offset: -5 },
    { name: 'CST', offset: -6 },
    { name: 'MST', offset: -7 },
    { name: 'PST', offset: -8 },
    // Add more time zones as needed
  ];

  const handleSelect = (timeZone) => {
    onTimeZoneSelect(timeZone.name);
  };

  return (
    <select onChange={(event) => handleSelect(timeZones[event.target.value])}>
      {timeZones.map((timeZone, index) => (
        <option value={index}>{timeZone.name}</option>
      ))}
    </select>
  );
}

export default ReferenceTimeZoneSelector;

CityTimeZoneList.js

import React from 'react';

function CityTimeZoneList({ currentTimes }) {
  const cities = Object.keys(currentTimes);

  return (
    <ul>
      {cities.map((city) => (
        <li key={city}>
          {city} ({currentTimes[city]})
        </li>
      ))}
    </ul>
  );
}

export default CityTimeZoneList;

Explanation

The TimeZoneConverter component renders the time zone converter interface. The ReferenceTimeZoneSelector component represents the reference time zone selection menu. The CityTimeZoneList component represents the list of cities or time zones with their corresponding current times. The getCurrentTime function gets the current time in a given time zone. The updateCurrentTimes function updates the current times in other cities or time zones.

Possible Future Enhancements

  • Add more cities or time zones to the list.

  • Improve the user interface and user experience.

  • Add support for daylight saving time (DST).

  • Display the time zone offset or abbreviation next to each city or time zone.

  • Allow users to add or remove cities or time zones from the list.

Previous24 - Digital Clock with Time Zone SupportNext26 - Weather Forecast App with Location Detection

Last updated 10 months ago