Moment Formatting Plugin

FullCalendar’s Moment JS connector package lets you use moment formatting strings for all date-formatting settings. The plugin allows you to specify moment formatting strings wherever a date formatting input is expected.

Usage with NPM

First, install the necessary package:

npm install --save @fullcalendar/format-moment

Then, create a new calendar and pass in the plugins:

import { Calendar } from "fullcalendar";
import momentFormatPlugin from "@fullcalendar/format-moment";
// other plugins... 

let calendarEl = document.getElementById("calendar");
let calendar = new Calendar(calendarEl, {
  plugins: [momentFormatPlugin, /* other plugins... */],
  titleFormat: "MMMM D, YYYY", // you can now use moment format strings!
});

calendar.render();

Range Formatting

If you want to format a date range, you can group related date parts with curly brackets:

let calendar = new Calendar(calendarEl, {
  titleFormat: "{MMMM {D}}, YYYY",
  // could produce "January 5 - 7, 2018"
  // could produce "January 5 - February 31, 2018"
  // could produce "January 5, 2018 - June 9, 2019"
});

Usage with Script Tags

You can also configure the moment plugin with script tags. This example leverages CDN links:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <!-- STANDARD JS -->
    <script src="https://cdn.jsdelivr.net/npm/fullcalendar@{latestReleases.v7}/all.global.js"></script>

+   <script src="https://cdn.jsdelivr.net/npm/@fullcalendar/format-moment@{latestReleases.v7}/global.js"></script>

    <!-- THEME JS -->
    <script src="https://cdn.jsdelivr.net/npm/fullcalendar@{latestReleases.v7}/themes/monarch/global.js"></script>

    <!-- STYLESHEETS -->
    <link href='https://cdn.jsdelivr.net/npm/fullcalendar@{latestReleases.v7}/skeleton.css' rel='stylesheet' />
    <link href='https://cdn.jsdelivr.net/npm/fullcalendar@{latestReleases.v7}/themes/monarch/theme.css' rel='stylesheet' />
    <link href='https://cdn.jsdelivr.net/npm/fullcalendar@{latestReleases.v7}/themes/monarch/palettes/purple.css' rel='stylesheet' />

    <script>
      document.addEventListener("DOMContentLoaded", function () {
        var calendarEl = document.getElementById("calendar");
        var calendar = new FullCalendar.Calendar(calendarEl, {
          initialView: "dayGridMonth",
+         titleFormat: "MMMM D, YYYY" // you can now use moment format strings!
        });
        calendar.render();
      });
    </script>
  </head>
  <body>
    <div id="calendar"></div>
  </body>
</html>

Usage with TypeScript

If you’re using the @fullcalendar/format-moment plugin in a TypeScript project, you’ll need to configure your tsconfig.json to have the allowSyntheticDefaultImports compiler option set to true:

{
  "compilerOptions": {
    "allowSyntheticDefaultImports": true
  }
}

This is necessary due to how the moment package exposes itself in an ES6 environment.