Skip to main content

How to Get the Current Date and Time in UTC/GMT using JavaScript

When working with dates and times, especially for server communication or logging, it is a crucial best practice to use a universal standard to avoid ambiguity. The global standard for time is UTC (Coordinated Universal Time). GMT (Greenwich Mean Time) is a time zone that is often used interchangeably with UTC, as they are functionally the same.

This guide will teach you the standard, built-in JavaScript methods for getting the current date and time as a UTC string, focusing on the modern toISOString() method.

The Core Concept: Local Time vs. UTC

It is essential to understand that a JavaScript Date object represents a single moment in time, stored internally as milliseconds since the Unix Epoch (in UTC).

  • When you call methods like .toString() or .getHours(), the browser implicitly converts this universal time into the user's local time zone.
  • To work with UTC, you must use methods that are explicitly designed to return UTC values.

The Date.prototype.toISOString() method is the standard, most reliable way to get a UTC date and time string. It returns the date in the ISO 8601 format (YYYY-MM-DDTHH:mm:ss.sssZ), which is a universally recognized, machine-readable standard.

For example, you need to get the current time in a standardized UTC format to send to a server.

Solution:

// 1. Create a new Date object for the current moment.
const now = new Date();

// 2. Call .toISOString() to get the UTC representation.
const isoString = now.toISOString();

console.log(isoString);
// Output: "2025-10-27T19:30:00.123Z" (example)
note

The Z at the end of the string is the ISO 8601 designator for "Zulu" time, which means UTC. This format is the recommended best practice for storing and transmitting dates.

The Human-Readable Alternative: date.toUTCString()

If you need a more human-readable UTC/GMT string, you can use the toUTCString() method.

Solution:

const now = new Date();

const utcString = now.toUTCString();

console.log(utcString);
// Output: "Fri, 27 Oct 2025 19:30:00 GMT" (example)
note

While this is easier for humans to read, the toISOString() format is generally preferred for data interchange.

Getting Individual UTC Date/Time Components

If you need to build a custom-formatted UTC date string, you must use the specific getUTC* methods on the Date object. These are the UTC equivalents of the standard get* methods.

  • getUTCFullYear()
  • getUTCMonth() (0-11)
  • getUTCDate() (1-31)
  • getUTCHours() (0-23)
  • getUTCMinutes() (0-59)
  • getUTCSeconds() (0-59)

For example, you need to create a custom UTC timestamp in the format YYYY-MM-DD HH:MM:SS.

Solution:

function getUtcTimestamp(date) {
const pad = (num) => num.toString().padStart(2, '0');

const year = date.getUTCFullYear();
const month = pad(date.getUTCMonth() + 1); // getUTCMonth() is 0-based
const day = pad(date.getUTCDate());

const hours = pad(date.getUTCHours());
const minutes = pad(date.getUTCMinutes());
const seconds = pad(date.getUTCSeconds());

return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
}

// Example Usage:
const now = new Date();
console.log(getUtcTimestamp(now));
// Output: "2025-10-27 19:30:00" (example)
note

This is a reliable way to build a custom format, but for standard formats, toISOString() is simpler.

Conclusion

Getting the current date and time in UTC is a straightforward task in JavaScript if you use the correct methods.

  • The recommended best practice for a machine-readable, standard format is the date.toISOString() method.
  • For a more human-readable format, use date.toUTCString().
  • If you need to get individual date or time components in UTC, you must use the specific getUTC* methods (e.g., getUTCHours(), getUTCDate()).

By always using these explicit UTC methods, you can avoid ambiguity and ensure your date and time operations are consistent and reliable across all environments.