Dates with Apps Script

To get the current date and time, simply create a Date object without any arguments:

function example() {
  const date = new Date();
  console.log(date); // Example: Sat Jan 13 2024 10:41:29 GMT+0100 (Central European Standard Time)
}

Setting a Date

To set a specific date, enter it as an argument of the Date object:

function example() {

  let date = new Date(2024, 1, 24);
  console.log(date); // Returns: Sat Feb 24 2024 00:00:00 GMT+0100 (Central European Standard Time)
  
  date = new Date(2024, 1, 24, 14, 30);
  console.log(date); // Returns: Sat Feb 24 2024 14:30:00 GMT+0100 (Central European Standard Time)
  
  date = new Date('2025-03-25');
  console.log(date); // Returns: Tue Mar 25 2025 01:00:00 GMT+0100 (Central European Standard Time)
  
  date = new Date('March 25, 2025 15:25:00');
  console.log(date); // Returns: Tue Mar 25 2025 15:25:00 GMT+0100 (Central European Standard Time)
}

Formatting a Date

To format a date with Apps Script, use Utilities.formatDate where you specify the date, timezone, and format.

Here are some examples with different time zones:

function example() {

  const date = new Date();

  console.log(Utilities.formatDate(date, 'GMT', 'MM/dd/yyyy')); // Example: 13/01/2024

  console.log(Utilities.formatDate(date, 'GMT-7', 'MM/dd/yyyy hh:mm a')); // Example: 01/13/2024 02:49 AM

  console.log(Utilities.formatDate(date, 'EST', 'MM/dd/yyyy hh:mm a')); // Example: 01/13/2024 04:49 AM

  console.log(Utilities.formatDate(date, 'CST', 'MM/dd/yyyy hh:mm a')); // Example: 01/13/2024 03:49 AM

  console.log(Utilities.formatDate(date, 'PST', 'MM/dd/yyyy hh:mm a')); // Example: 01/13/2024 01:49 AM

  console.log(Utilities.formatDate(date, 'America/New_York', 'MM/dd/yyyy hh:mm a')); // Example: 01/13/2024 04:49 AM

  // Session.getScriptTimeZone() => user's timezone
  console.log(Utilities.formatDate(date, Session.getScriptTimeZone(), 'MM/dd/yyyy hh:mm a')); // Example: 01/13/2024 10:49 AM
}

And here are different examples of date formats:

function example() {

  const date = new Date('Mon Feb 12 2024 03:48:45 PM EST');
  const consoleDate = format => console.log(Utilities.formatDate(date, 'EST', format));

  consoleDate('M/d/yy');             // Returns: 2/12/24
  consoleDate('MM-dd-yyyy');         // Returns: 02-12-2024
  consoleDate('MMM d yy');           // Returns: Feb 12 24
  consoleDate('MMMM d yyyy');        // Returns: February 12 2024
  consoleDate('E d');                // Returns: Mon 12
  consoleDate('EEEE d hh:mm a');     // Returns: Monday 12 03:48 PM
  consoleDate('MM/dd/yyyy hh:mm a'); // Returns: 02/12/2024 03:48 PM
  consoleDate('MM/dd/yyyy HH:mm');   // Returns: 02/12/2024 15:48
  consoleDate("'On' MM/dd/yy 'at' hh:mm a"); // Returns: On 02/12/24 at 03:48 PM
  consoleDate("'Week number:' w");           // Returns: Week number: 7
  consoleDate("'Day of week (1-7):' u");     // Returns: Day of week (1-7): 1
}

Retrieving Information

To retrieve the year, month, hour, etc., you can use one of these methods:

function example() {

  const date = new Date('Mon Feb 12 2024 03:48:45 PM EST');

  console.log(date.getFullYear()); // Returns the year: 2024
  console.log(date.getMonth());    // Returns the month (0-11): 1
  console.log(date.getDate());     // Returns the day: 12
  console.log(date.getDay());      // Returns the weekday (0-6): 1
  console.log(date.getHours());    // Returns the hour: 21
  console.log(date.getMinutes());  // Returns the minutes: 48
  console.log(date.getTime());     // Returns the time elapsed in milliseconds since 1970: 1707770925000
}

Formatting Alternative

An alternative to formatting a date is to use the toLocaleDateString method:

function example() {

  const date = new Date('Mon Feb 12 2024 03:48:45 PM EST');

  console.log(date.toLocaleDateString()); // Returns: 2/12/2024

  console.log(date.toLocaleDateString('en-US')); // Returns: 2/12/2024

  console.log(date.toLocaleDateString('en-US', {
    weekday: 'long',
    year: 'numeric',
    month: 'long',
    day: 'numeric'
  })); // Returns: Monday, February 12, 2024

  console.log(date.toLocaleDateString('en-US', {
    year: '2-digit',
    month: 'numeric',
    day: 'numeric'
  })); // Returns: 2/12/24

  console.log(date.toLocaleDateString('en-US', {
    weekday: 'short',
    month: 'long',
    day: 'numeric',
    hour: 'numeric',
    minute: '2-digit'
  })); // Returns: Mon, February 12 at 9:48 PM
}

Or in some cases, the toLocaleString method:

function example() {

  const date = new Date('Mon Feb 12 2024 03:48:45 PM EST');

  console.log(date.toLocaleString()); // Returns: 2/12/2024, 9:48:45 PM

  console.log(date.toLocaleString('en-US')); // Returns: 2/12/2024, 9:48:45 PM

  console.log(date.toLocaleString('en-US', {
    hour: 'numeric',
    minute: '2-digit'
  })); // Returns: 9:48 PM
}