World clock

See the current time and date in several places at once. Set a home clock to compare the time difference and see where it is already tomorrow or still yesterday.

Loading the clocks…

Compare the date as well as the time

Add the places you need to this world clock and choose one as home. Every row shows the current local time, full date and UTC offset. The difference beside each clock is measured from your chosen home clock.

A place can already be on tomorrow's date while another is still on yesterday's. Keep the date with the time when you copy the clocks into a message or plan a call.

Today's difference can change

Places can change their clocks on different dates, and some keep the same offset all year. Two cities' current time difference therefore does not establish their difference on a future meeting date. UTC keeps a fixed offset. London follows its seasonal local-time rules.

Use the time zone meeting planner to compare a proposed date across several places, or the time zone converter for one source and destination.

Choose the local zone you mean

The picker uses named time zones such as America/Denver and Asia/Tokyo. The place label helps you find the zone, and the full identifier stays beside the clock. Choose the zone that applies to the location rather than assuming every place in a country uses the same time.

Build a world clock

Resolve every selected zone in one Time request so all clocks share an instant. Advance that one sampled instant locally and format it in each named zone; a ticking clock does not need an API request every second.

  1. Collect up to ten named zones and choose a home clock for differences and date changes.
  2. Request the source and destination clocks in one Time call and reject an incomplete or mixed-instant result.
  3. Save the returned Unix instant and performance.now() when the response arrives. Use one shared timer to advance that instant locally, then format every selected clock from it.
  4. Pause repainting while hidden and catch up using elapsed time when visible. Refresh the sample when the visitor asks or the selected places change.
  5. Keep the local date and UTC offset visible, and copy them with each clock. Use the actual future date in a meeting planner rather than assuming today's difference stays the same.

Installation steps are included in each example. Set PARSEAPI_KEY on your server. Swift and Kotlin use an app key restricted to your app ID.

// npm install @parseapi/sdk@1.14.0
import { parseAPI } from '@parseapi/sdk';

// Set PARSEAPI_KEY on your server.
const parse = parseAPI();

const destinations = ['Europe/London', 'Asia/Tokyo'];
// One request for all clocks. The browser timer below advances this sample locally.
const row = await parse.time('America/Denver', { targets: destinations });
const clocks = [row, ...(row.targets ?? [])].map(clock => ({
  timezone: clock.timezone, at: clock.at, offset: clock.offset, unix: clock.unix,
}));
if (!Number.isSafeInteger(row.unix) || clocks.length !== destinations.length + 1 ||
    clocks.some(clock => !clock.timezone || !clock.at || !clock.offset || clock.unix !== row.unix)) {
  throw new Error('A complete aligned clock comparison is unavailable.');
}
console.log({ instant: row.unix, clocks });

Keep the clocks ticking locally

world-clock-tick.js
// Sample Time once, save performance.now() when the response arrives, then call
// advanceWorldClock(sample.unix, performance.now() - sampledAt, zones, home)
// from one shared timer. Re-render every clock from that one instant. Pause
// repainting in a hidden tab; elapsed time catches up when it becomes visible.
// Re-fetch only when the selected places change or the visitor asks to refresh.
function advanceWorldClock(unix, elapsedMilliseconds, zones, home = zones[0]) {
  if (!Number.isSafeInteger(unix) || !Number.isFinite(elapsedMilliseconds)
      || !Array.isArray(zones) || zones.length < 1 || zones.length > 10
      || !zones.includes(home)) throw new RangeError('Choose up to ten zones and a home clock.');
  const instantMilliseconds = unix * 1000 + Math.max(0, elapsedMilliseconds);
  function clock(timezone) {
    const formatter = new Intl.DateTimeFormat('en-CA', { timeZone: timezone,
      year: 'numeric', month: '2-digit', day: '2-digit', hour: '2-digit',
      minute: '2-digit', second: '2-digit', hourCycle: 'h23', timeZoneName: 'longOffset' });
    const p = Object.fromEntries(formatter.formatToParts(instantMilliseconds).map(part => [part.type, part.value]));
    return { timezone, date: `${p.year.padStart(4, '0')}-${p.month}-${p.day}`,
      time: `${p.hour}:${p.minute}:${p.second}`, offset: p.timeZoneName.replace('GMT', 'UTC').replace(/^UTC[+-]00:00$/, 'UTC') };
  }
  const homeDate = clock(home).date;
  return { instantMilliseconds, clocks: zones.map(timezone => {
    const result = clock(timezone);
    return { ...result, home: timezone === home,
      dayDifference: Math.round((Date.parse(result.date + 'T00:00:00Z') - Date.parse(homeDate + 'T00:00:00Z')) / 86400000) };
  }) };
}

Time API documentationTime zone meeting planner

How do I see the current time in different countries?

Add the named time zones for the places you want to compare. Each clock shows its current local time, date and UTC offset. A country can have several time zones, so choose the zone for the specific city or region.

Does this world clock include daylight saving time?

Yes. Each clock follows the named zone's rules for the current instant, including seasonal clock changes where they apply. The difference from your home clock can change when two places move their clocks on different dates.

Why is a world clock showing tomorrow or yesterday?

All clocks show the same instant. A place farther east or west may already be on the next date or still on the previous one. The date label compares that place with your selected home clock. Places across the international date line can be two calendar dates apart.

Is UTC the same as London time?

UTC keeps the same offset throughout the year. London uses GMT in winter and British Summer Time, UTC+01:00, in summer. Select Europe/London for London's local clock and UTC for a clock that stays at zero offset.

How do I compare everything with my local time?

Add your named time zone, then choose Set as home beneath that clock. The other clocks show how far ahead or behind it they are. Changing the home clock changes the comparison without changing the shared instant.

Can I use today's time difference to plan a future meeting?

Use the actual meeting date. A future date can have a different time difference because of daylight saving changes. Open the time zone meeting planner from your result to carry your selected zones into a future meeting.

How do I copy all the current times?

Choose Copy times. The copied text includes every selected zone, its local date and time, and UTC offset, with your home clock identified. This keeps the date changes visible when you share the comparison.