luxon
Version:
Immutable date wrapper
756 lines (740 loc) • 41.1 kB
HTML
<html>
<head>
<meta charset="utf-8">
<base data-ice="baseUrl" href="../../">
<title data-ice="title">Luxon</title>
<link type="text/css" rel="stylesheet" href="css/style.css">
<link type="text/css" rel="stylesheet" href="css/prettify-tomorrow.css">
<script src="script/prettify/prettify.js"></script>
<script src="script/manual.js"></script>
<link data-ice="userStyle" rel="stylesheet" href="user/css/0-styles.css">
</head>
<body class="layout-container manual-root" data-ice="rootContainer">
<header><span class="luxon-title">Luxon</span>
<a href="./">Home</a>
<a href="identifiers.html">Reference</a>
<a href="source.html">Source</a>
<a data-ice="repoURL" href="https://github.com/icambron/luxon" class="repo-url-github">Repository</a>
<div class="search-box">
<span>
<img src="./image/search.png">
<span class="search-input-edge"></span><input class="search-input"><span class="search-input-edge"></span>
</span>
<ul class="search-result"></ul>
</div>
</header>
<nav class="navigation" data-ice="nav"><div class="manual-toc-root">
<div data-ice="manual" data-toc-name="design">
<ul class="manual-toc">
<li data-ice="manualNav" class="indent-h1 manual-color manual-color-design" data-section-count="■■" data-link="manual/design/install.html"><a href="manual/design/install.html" data-ice="link">Install guide</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/design/install.html"><a href="manual/design/install.html#basic-browser-setup" data-ice="link">Basic browser setup</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/design/install.html"><a href="manual/design/install.html#node" data-ice="link">Node</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/design/install.html"><a href="manual/design/install.html#amd-system-js-requirejs-etc-" data-ice="link">AMD (System.js, RequireJS, etc)</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/design/install.html"><a href="manual/design/install.html#es6" data-ice="link">ES6</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/design/install.html"><a href="manual/design/install.html#webpack" data-ice="link">Webpack</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/design/install.html"><a href="manual/design/install.html#meteor" data-ice="link">Meteor</a></li>
<li data-ice="manualNav" class="indent-h1 manual-color manual-color-design" data-section-count="■■■■" data-link="manual/design/tour.html"><a href="manual/design/tour.html" data-ice="link">A quick tour</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/design/tour.html"><a href="manual/design/tour.html#your-first-datetime" data-ice="link">Your first DateTime</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/design/tour.html"><a href="manual/design/tour.html#creating-a-datetime" data-ice="link">Creating a DateTime</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/design/tour.html"><a href="manual/design/tour.html#create-from-an-object" data-ice="link">Create from an object</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/design/tour.html"><a href="manual/design/tour.html#parse-from-iso-8601" data-ice="link">Parse from ISO 8601</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/design/tour.html"><a href="manual/design/tour.html#getting-to-know-your-datetime-instance" data-ice="link">Getting to know your DateTime instance</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/design/tour.html"><a href="manual/design/tour.html#tostring" data-ice="link">toString</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/design/tour.html"><a href="manual/design/tour.html#getting-at-components" data-ice="link">Getting at components</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/design/tour.html"><a href="manual/design/tour.html#other-fun-accessors" data-ice="link">Other fun accessors</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/design/tour.html"><a href="manual/design/tour.html#formatting-your-datetime" data-ice="link">Formatting your DateTime</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/design/tour.html"><a href="manual/design/tour.html#transforming-your-datetime" data-ice="link">Transforming your DateTime</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/design/tour.html"><a href="manual/design/tour.html#immutability" data-ice="link">Immutability</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/design/tour.html"><a href="manual/design/tour.html#math" data-ice="link">Math</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/design/tour.html"><a href="manual/design/tour.html#set" data-ice="link">Set</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/design/tour.html"><a href="manual/design/tour.html#intl" data-ice="link">Intl</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/design/tour.html"><a href="manual/design/tour.html#time-zones" data-ice="link">Time zones</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/design/tour.html"><a href="manual/design/tour.html#durations" data-ice="link">Durations</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/design/tour.html"><a href="manual/design/tour.html#intervals" data-ice="link">Intervals</a></li>
</ul>
</div>
<div data-ice="manual" data-toc-name="usage">
<ul class="manual-toc">
<li data-ice="manualNav" class="indent-h1 manual-color manual-color-usage" data-section-count="■■" data-link="manual/usage/intl.html"><a href="manual/usage/intl.html" data-ice="link">Intl</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/usage/intl.html"><a href="manual/usage/intl.html#how-locales-work" data-ice="link">How locales work</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/usage/intl.html"><a href="manual/usage/intl.html#setting-locale" data-ice="link">Setting locale</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/usage/intl.html"><a href="manual/usage/intl.html#checking-what-you-got" data-ice="link">Checking what you got</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/usage/intl.html"><a href="manual/usage/intl.html#methods-affected-by-the-locale" data-ice="link">Methods affected by the locale</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/intl.html"><a href="manual/usage/intl.html#formatting" data-ice="link">Formatting</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/intl.html"><a href="manual/usage/intl.html#parsing" data-ice="link">Parsing</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/intl.html"><a href="manual/usage/intl.html#listing" data-ice="link">Listing</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/usage/intl.html"><a href="manual/usage/intl.html#numberingsystem" data-ice="link">numberingSystem</a></li>
<li data-ice="manualNav" class="indent-h1 manual-color manual-color-usage" data-section-count="■■■■■" data-link="manual/usage/zones.html"><a href="manual/usage/zones.html" data-ice="link">Time zones and offsets</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/usage/zones.html"><a href="manual/usage/zones.html#don-t-worry-" data-ice="link">Don't worry!</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/usage/zones.html"><a href="manual/usage/zones.html#terminology" data-ice="link">Terminology</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/usage/zones.html"><a href="manual/usage/zones.html#luxon-works-with-time-zones" data-ice="link">Luxon works with time zones</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/usage/zones.html"><a href="manual/usage/zones.html#specifying-a-zone" data-ice="link">Specifying a zone</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/zones.html"><a href="manual/usage/zones.html#iana-support" data-ice="link">IANA support</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/usage/zones.html"><a href="manual/usage/zones.html#creating-datetimes" data-ice="link">Creating DateTimes</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/zones.html"><a href="manual/usage/zones.html#local-by-default" data-ice="link">Local by default</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/zones.html"><a href="manual/usage/zones.html#creating-datetimes-in-a-zone" data-ice="link">Creating DateTimes in a zone</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/zones.html"><a href="manual/usage/zones.html#strings-that-specify-an-offset" data-ice="link">Strings that specify an offset</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/zones.html"><a href="manual/usage/zones.html#setzone" data-ice="link">setZone</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/usage/zones.html"><a href="manual/usage/zones.html#changing-zones" data-ice="link">Changing zones</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/zones.html"><a href="manual/usage/zones.html#setzone" data-ice="link">setZone</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/zones.html"><a href="manual/usage/zones.html#keepcalendartime" data-ice="link">keepCalendarTime</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/usage/zones.html"><a href="manual/usage/zones.html#accessors" data-ice="link">Accessors</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/usage/zones.html"><a href="manual/usage/zones.html#dst-weirdness" data-ice="link">DST weirdness</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/zones.html"><a href="manual/usage/zones.html#invalid-times" data-ice="link">Invalid times</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/zones.html"><a href="manual/usage/zones.html#ambiguous-times" data-ice="link">Ambiguous times</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/zones.html"><a href="manual/usage/zones.html#math-across-dsts" data-ice="link">Math across DSTs</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/usage/zones.html"><a href="manual/usage/zones.html#changing-the-default-zone" data-ice="link">Changing the default zone</a></li>
<li data-ice="manualNav" class="indent-h1 manual-color manual-color-usage" data-section-count="■" data-link="manual/usage/calendars.html"><a href="manual/usage/calendars.html" data-ice="link">Calendars</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/usage/calendars.html"><a href="manual/usage/calendars.html#fully-supported-calendars" data-ice="link">Fully supported calendars</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/usage/calendars.html"><a href="manual/usage/calendars.html#output-calendars" data-ice="link">Output calendars</a></li>
<li data-ice="manualNav" class="indent-h1 manual-color manual-color-usage" data-section-count="■■■■" data-link="manual/usage/formatting.html"><a href="manual/usage/formatting.html" data-ice="link">Formatting</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/usage/formatting.html"><a href="manual/usage/formatting.html#technical-formats-strings-for-computers-" data-ice="link">Technical formats (strings for computers)</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/formatting.html"><a href="manual/usage/formatting.html#iso-8601" data-ice="link">ISO 8601</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/formatting.html"><a href="manual/usage/formatting.html#http-and-rfc-2822" data-ice="link">HTTP and RFC 2822</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/usage/formatting.html"><a href="manual/usage/formatting.html#tolocalestring-strings-for-humans-" data-ice="link">toLocaleString (strings for humans)</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/formatting.html"><a href="manual/usage/formatting.html#the-basics" data-ice="link">The basics</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/formatting.html"><a href="manual/usage/formatting.html#intl-datetimeformat" data-ice="link">Intl.DateTimeFormat</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/formatting.html"><a href="manual/usage/formatting.html#presets" data-ice="link">Presets</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/formatting.html"><a href="manual/usage/formatting.html#intl" data-ice="link">Intl</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/usage/formatting.html"><a href="manual/usage/formatting.html#formatting-with-tokens-strings-for-cthulhu-" data-ice="link">Formatting with tokens (strings for Cthulhu)</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/formatting.html"><a href="manual/usage/formatting.html#consider-alternatives" data-ice="link">Consider alternatives</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/formatting.html"><a href="manual/usage/formatting.html#toformat" data-ice="link">toFormat</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/formatting.html"><a href="manual/usage/formatting.html#intl" data-ice="link">Intl</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/formatting.html"><a href="manual/usage/formatting.html#escaping" data-ice="link">Escaping</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/formatting.html"><a href="manual/usage/formatting.html#standalone-vs-format-tokens" data-ice="link">Standalone vs format tokens</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/formatting.html"><a href="manual/usage/formatting.html#macro-tokens" data-ice="link">Macro tokens</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/formatting.html"><a href="manual/usage/formatting.html#table-of-tokens" data-ice="link">Table of tokens</a></li>
<li data-ice="manualNav" class="indent-h1 manual-color manual-color-usage" data-section-count="■■■" data-link="manual/usage/parsing.html"><a href="manual/usage/parsing.html" data-ice="link">Parsing</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/usage/parsing.html"><a href="manual/usage/parsing.html#parsing-technical-formats" data-ice="link">Parsing technical formats</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/parsing.html"><a href="manual/usage/parsing.html#iso-8601" data-ice="link">ISO 8601</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/parsing.html"><a href="manual/usage/parsing.html#http-and-rfc2822" data-ice="link">HTTP and RFC2822</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/usage/parsing.html"><a href="manual/usage/parsing.html#ad-hoc-parsing" data-ice="link">Ad-hoc parsing</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/parsing.html"><a href="manual/usage/parsing.html#consider-alternatives" data-ice="link">Consider alternatives</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/parsing.html"><a href="manual/usage/parsing.html#fromstring" data-ice="link">fromString</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/parsing.html"><a href="manual/usage/parsing.html#intl" data-ice="link">Intl</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/parsing.html"><a href="manual/usage/parsing.html#limitations" data-ice="link">Limitations</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/parsing.html"><a href="manual/usage/parsing.html#debugging" data-ice="link">Debugging</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/parsing.html"><a href="manual/usage/parsing.html#table-of-tokens" data-ice="link">Table of tokens</a></li>
<li data-ice="manualNav" class="indent-h1 manual-color manual-color-usage" data-section-count="■■■" data-link="manual/usage/math.html"><a href="manual/usage/math.html" data-ice="link">Math</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/usage/math.html"><a href="manual/usage/math.html#calendar-math-vs-time-math" data-ice="link">Calendar math vs time math</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/math.html"><a href="manual/usage/math.html#the-basics" data-ice="link">The basics</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/math.html"><a href="manual/usage/math.html#which-units-use-which-math-" data-ice="link">Which units use which math?</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/math.html"><a href="manual/usage/math.html#how-to-think-about-calendar-math" data-ice="link">How to think about calendar math</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/math.html"><a href="manual/usage/math.html#dsts" data-ice="link">DSTs</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/math.html"><a href="manual/usage/math.html#time-math" data-ice="link">Time math</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/usage/math.html"><a href="manual/usage/math.html#math-with-multiple-units" data-ice="link">Math with multiple units</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/usage/math.html"><a href="manual/usage/math.html#duration-math" data-ice="link">Duration math</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/math.html"><a href="manual/usage/math.html#basics" data-ice="link">Basics</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/math.html"><a href="manual/usage/math.html#diffs" data-ice="link">Diffs</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/math.html"><a href="manual/usage/math.html#casual-vs-longterm-conversion-accuracy" data-ice="link">Casual vs longterm conversion accuracy</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/math.html"><a href="manual/usage/math.html#losing-information" data-ice="link">Losing information</a></li>
<li data-ice="manualNav" class="indent-h1 manual-color manual-color-usage" data-section-count="■■" data-link="manual/usage/validity.html"><a href="manual/usage/validity.html" data-ice="link">Validity</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/usage/validity.html"><a href="manual/usage/validity.html#invalid-datetimes" data-ice="link">Invalid DateTimes</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/usage/validity.html"><a href="manual/usage/validity.html#reasons-a-datetimes-can-be-invalid" data-ice="link">Reasons a DateTimes can be invalid</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/usage/validity.html"><a href="manual/usage/validity.html#debugging-invalid-datetimes" data-ice="link">Debugging invalid DateTimes</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/validity.html"><a href="manual/usage/validity.html#invalidreason" data-ice="link">invalidReason</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/usage/validity.html"><a href="manual/usage/validity.html#throwoninvalid" data-ice="link">throwOnInvalid</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/usage/validity.html"><a href="manual/usage/validity.html#invalid-durations" data-ice="link">Invalid Durations</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/usage/validity.html"><a href="manual/usage/validity.html#invalid-intervals" data-ice="link">Invalid Intervals</a></li>
</ul>
</div>
<div data-ice="manual" data-toc-name="reference">
<ul class="manual-toc">
<li data-ice="manualNav" class="indent-h1 manual-color manual-color-reference" data-section-count="■■" data-link="identifiers.html"><a href="identifiers.html" data-ice="link">API reference</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="identifiers.html"><a href="identifiers.html#class" data-ice="link">Class</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="identifiers.html"><a href="identifiers.html#interface" data-ice="link">Interface</a></li>
</ul>
</div>
<div data-ice="manual" data-toc-name="faq">
<ul class="manual-toc">
<li data-ice="manualNav" class="indent-h1 manual-color manual-color-faq" data-section-count="■■" data-link="manual/faq/matrix.html"><a href="manual/faq/matrix.html" data-ice="link">Support matrix</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/faq/matrix.html"><a href="manual/faq/matrix.html#what-works-everywhere" data-ice="link">What works everywhere</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/faq/matrix.html"><a href="manual/faq/matrix.html#new-capabilities-and-how-they-re-used" data-ice="link">New capabilities and how they're used</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/faq/matrix.html"><a href="manual/faq/matrix.html#the-matrix" data-ice="link">The matrix</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/faq/matrix.html"><a href="manual/faq/matrix.html#what-happens-if-a-feature-isn-t-supported-" data-ice="link">What happens if a feature isn't supported?</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/faq/matrix.html"><a href="manual/faq/matrix.html#polyfills" data-ice="link">Polyfills</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/faq/matrix.html"><a href="manual/faq/matrix.html#intl" data-ice="link">Intl</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/faq/matrix.html"><a href="manual/faq/matrix.html#zones" data-ice="link">Zones</a></li>
<li data-ice="manualNav" class="indent-h1 manual-color manual-color-faq" data-section-count="■■■■" data-link="manual/faq/moment.html"><a href="manual/faq/moment.html" data-ice="link">For Moment users</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/faq/moment.html"><a href="manual/faq/moment.html#immutability" data-ice="link">Immutability</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/faq/moment.html"><a href="manual/faq/moment.html#other-api-style-differences" data-ice="link">Other API style differences</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/faq/moment.html"><a href="manual/faq/moment.html#major-functional-differences" data-ice="link">Major functional differences</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/faq/moment.html"><a href="manual/faq/moment.html#datetime-method-equivalence" data-ice="link">DateTime method equivalence</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/faq/moment.html"><a href="manual/faq/moment.html#creation" data-ice="link">Creation</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/faq/moment.html"><a href="manual/faq/moment.html#getters-and-setters" data-ice="link">Getters and setters</a></li>
<li data-ice="manualNav" class="indent-h4" data-link="manual/faq/moment.html"><a href="manual/faq/moment.html#basic-information-getters" data-ice="link">Basic information getters</a></li>
<li data-ice="manualNav" class="indent-h4" data-link="manual/faq/moment.html"><a href="manual/faq/moment.html#unit-getters" data-ice="link">Unit getters</a></li>
<li data-ice="manualNav" class="indent-h4" data-link="manual/faq/moment.html"><a href="manual/faq/moment.html#programmatic-get-and-set" data-ice="link">Programmatic get and set</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/faq/moment.html"><a href="manual/faq/moment.html#transformation" data-ice="link">Transformation</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/faq/moment.html"><a href="manual/faq/moment.html#query" data-ice="link">Query</a></li>
<li data-ice="manualNav" class="indent-h3" data-link="manual/faq/moment.html"><a href="manual/faq/moment.html#output" data-ice="link">Output</a></li>
<li data-ice="manualNav" class="indent-h4" data-link="manual/faq/moment.html"><a href="manual/faq/moment.html#basics" data-ice="link">Basics</a></li>
<li data-ice="manualNav" class="indent-h4" data-link="manual/faq/moment.html"><a href="manual/faq/moment.html#humanization" data-ice="link">Humanization</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/faq/moment.html"><a href="manual/faq/moment.html#durations" data-ice="link">Durations</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/faq/moment.html"><a href="manual/faq/moment.html#intervals" data-ice="link">Intervals</a></li>
</ul>
</div>
<div data-ice="manual" data-toc-name="changelog">
<ul class="manual-toc">
<li data-ice="manualNav" class="indent-h1 manual-color manual-color-changelog" data-section-count="■" data-link="manual/changelog/changelog.html"><a href="manual/changelog/changelog.html" data-ice="link">Changelog</a></li>
<li data-ice="manualNav" class="indent-h2" data-link="manual/changelog/changelog.html"><a href="manual/changelog/changelog.html#0-4" data-ice="link">0.4</a></li>
</ul>
</div>
</div>
</nav>
<div class="content" data-ice="content"><div class="github-markdown">
<div class="manual-breadcrumb-list">
<a href="./manual/./index.html">Manual</a>
<span>»</span>
<span data-ice="title">FAQ</span>
</div>
<div data-ice="content"><h1 id="for-moment-users">For Moment users</h1>
<p>Luxon borrows lots of ideas from <a href="http://momentjs.com">Moment.js</a>, but there are a lot of differences too. This document clarifies what they are.</p>
<h2 id="immutability">Immutability</h2>
<p>Luxon's objects are immutable, whereas Moment's are mutable. For example, in Moment:</p>
<pre><code class="lang-js"><code class="source-code prettyprint">var m1 = moment();
var m2 = m1.add(1, 'hours');
m1.valueOf() === m2.valueOf(); //=> true</code>
</code></pre>
<p>This happens because <code>m1</code> and <code>m2</code> are really the same object; <code>add()</code> <em>mutated</em> the object to be an hour later. Compare that to Luxon:</p>
<pre><code class="lang-js"><code class="source-code prettyprint">var d1 = DateTime.local();
var d2 = d1.plus({ hours: 1 });
d1.valueOf() === d2.valueOf(); //=> false</code>
</code></pre>
<p>This happens because the <code>plus</code> method returns a new instance, leaving <code>d1</code> unmodified. It also means that Luxon doesn't require copy constructors or clone methods.</p>
<h2 id="other-api-style-differences">Other API style differences</h2>
<ol>
<li>Luxon methods often take option objects as their last parameter</li>
<li>Luxon has different static methods for object creation (e.g. <code>fromISO</code>), as opposed to Moment's one function that dispatches based on the input</li>
<li>Luxon parsers are very strict, whereas Moment's are more lenient.</li>
<li>Luxon uses getters instead of accessor methods, so <code>dateTime.year</code> instead of <code>dateTime.year()</code></li>
<li>Luxon centralizes its "setters", like <code>dateTime.set({year: 2016, month: 4})</code> instead of <code>dateTime.year(2016).month(4)</code> like in Moment.</li>
<li>Luxon's Durations are a separate top-level class.</li>
<li>Arguments to Luxon's methods are not automatically coerced into Moment instances. E.g. <code>m.diff('2017-04-01')</code> would be <code>dt.diff(DateTime.fromISO('2017-04-01'))</code>.</li>
</ol>
<h2 id="major-functional-differences">Major functional differences</h2>
<ol>
<li>Months in Luxon are 1-indexed instead of 0-indexed like in Moment and the native Date type.</li>
<li>Localizations and time zones are implemented by the native Intl API (or a polyfill of it), instead of by the library itself.</li>
<li>Luxon has both a Duration type and an Interval type</li>
</ol>
<h2 id="datetime-method-equivalence">DateTime method equivalence</h2>
<p>Here's a rough mapping of DateTime methods in Moment to ones in Luxon. I haven't comprehensively documented stuff that's in Luxon but not in Moment, just a few odds and ends that seemed obvious for inclusion; there are more. I've probably missed a few things too.</p>
<h3 id="creation">Creation</h3>
<table>
<thead>
<tr>
<th>Operation</th>
<th>Moment</th>
<th>Luxon</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>Now</td>
<td><code>moment()</code></td>
<td><code>DateTime.local()</code></td>
<td></td>
</tr>
<tr>
<td>From ISO</td>
<td><code>moment(String)</code></td>
<td><code>DateTime.fromISO(String)</code></td>
<td></td>
</tr>
<tr>
<td>From RFC 2822</td>
<td><code>moment(String)</code></td>
<td><code>DateTime.fromRFC2822(String)</code></td>
<td></td>
</tr>
<tr>
<td>From custom format</td>
<td><code>moment(String, String)</code></td>
<td><code>DateTime.fromString(String, String)</code></td>
<td></td>
</tr>
<tr>
<td>From object</td>
<td><code>moment(Object)</code></td>
<td><code>DateTime.fromObject(Object)</code></td>
<td></td>
</tr>
<tr>
<td>From timestamp</td>
<td><code>moment(Number)</code></td>
<td><code>DateTime.fromMillis(Number)</code></td>
<td></td>
</tr>
<tr>
<td>From JS Date</td>
<td><code>moment(Date)</code></td>
<td><code>DateTime.fromJSDate(Date)</code></td>
<td></td>
</tr>
<tr>
<td>From civil time</td>
<td><code>moment(Array)</code></td>
<td><code>DateTime.local(Number...)</code></td>
<td>Like <code>DateTime.local(2016, 12, 25, 10, 30)</code></td>
</tr>
<tr>
<td>From UTC civil time</td>
<td><code>moment.utc(Array)</code></td>
<td><code>DateTime.utc(Number...)</code></td>
<td>Luxon also uses <code>moment.utc()</code> to take other arguments. In Luxon, use the appropriate method and pass in the <code>{ zone: 'utc'}</code> option</td>
</tr>
<tr>
<td>Clone</td>
<td><code>moment(Moment)</code></td>
<td>N/A</td>
<td>Immutability makes this pointless; just reuse the object</td>
</tr>
<tr>
<td>Use the string's offset</td>
<td><code>parseZone</code></td>
<td>See note</td>
<td>Methods taking strings that can specify offset or zone take a <code>keepZone</code> argument</td>
</tr>
</tbody>
</table>
<h3 id="getters-and-setters">Getters and setters</h3>
<h4 id="basic-information-getters">Basic information getters</h4>
<table>
<thead>
<tr>
<th>Property</th>
<th>Moment</th>
<th>Luxon</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>Validity</td>
<td><code>isValid()</code></td>
<td><code>isValid</code></td>
<td>See also <code>invalidReason</code></td>
</tr>
<tr>
<td>Locale</td>
<td><code>locale()</code></td>
<td><code>locale</code></td>
<td></td>
</tr>
<tr>
<td>Zone</td>
<td><code>tz()</code></td>
<td><code>zone</code></td>
<td>Moment requires a plugin for this, but not Luxon</td>
</tr>
</tbody>
</table>
<h4 id="unit-getters">Unit getters</h4>
<table>
<thead>
<tr>
<th>Property</th>
<th>Moment</th>
<th>Luxon</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>Year</td>
<td><code>year()</code></td>
<td><code>year</code></td>
<td></td>
</tr>
<tr>
<td>Month</td>
<td><code>month()</code></td>
<td><code>month</code></td>
<td></td>
</tr>
<tr>
<td>Day of month</td>
<td><code>date()</code></td>
<td><code>day</code></td>
<td></td>
</tr>
<tr>
<td>Day of week</td>
<td><code>day()</code>, <code>weekday()</code>, <code>isoWeekday()</code></td>
<td><code>weekday</code></td>
<td>1-7, Monday is 1, Sunday is 7, per ISO</td>
</tr>
<tr>
<td>Day of year</td>
<td><code>dayOfYear()</code></td>
<td><code>ordinal</code></td>
<td></td>
</tr>
<tr>
<td>Hour of day</td>
<td><code>hour()</code></td>
<td><code>hour</code></td>
<td></td>
</tr>
<tr>
<td>Minute of hour</td>
<td><code>minute()</code></td>
<td><code>minute</code></td>
<td></td>
</tr>
<tr>
<td>Second of minute</td>
<td><code>second()</code></td>
<td><code>second</code></td>
<td></td>
</tr>
<tr>
<td>Millisecond of seconds</td>
<td><code>millisecond()</code></td>
<td><code>millisecond</code></td>
<td></td>
</tr>
<tr>
<td>Week of ISO week year</td>
<td><code>weekYear</code>, <code>isoWeekYear</code></td>
<td><code>weekYear</code></td>
<td></td>
</tr>
<tr>
<td>Quarter</td>
<td><code>quarter</code></td>
<td>None</td>
<td>Just divide the months by 4</td>
</tr>
</tbody>
</table>
<h4 id="programmatic-get-and-set">Programmatic get and set</h4>
<p>For programmatic getting and setting, Luxon and Moment are very similar here:</p>
<table>
<thead>
<tr>
<th>Operation</th>
<th>Moment</th>
<th>Luxon</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>get value</td>
<td><code>get(String)</code></td>
<td><code>get(String)</code></td>
<td></td>
</tr>
<tr>
<td>set value</td>
<td><code>set(String, Number)</code></td>
<td>None</td>
<td></td>
</tr>
<tr>
<td>set values</td>
<td><code>set(Object)</code></td>
<td><code>set(Object)</code></td>
<td>Like <code>dt.set({ year: 2016, month: 3 })</code></td>
</tr>
</tbody>
</table>
<h3 id="transformation">Transformation</h3>
<table>
<thead>
<tr>
<th>Operation</th>
<th>Moment</th>
<th>Luxon</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>Addition</td>
<td><code>add(Number, String)</code></td>
<td><code>plus(Object)</code></td>
<td>Like <code>dt.plus({ months: 3, days: 2 })</code></td>
</tr>
<tr>
<td>Subtraction</td>
<td><code>subtract(Number, String)</code></td>
<td><code>minus(Object)</code></td>
<td>Like <code>dt.minus({ months: 3, days: 2 })</code></td>
</tr>
<tr>
<td>Start of unit</td>
<td><code>startOf(String)</code></td>
<td><code>startOf(String)</code></td>
<td></td>
</tr>
<tr>
<td>End of unit</td>
<td><code>endOf(String)</code></td>
<td><code>endOf(String)</code></td>
<td></td>
</tr>
<tr>
<td>Change unit values</td>
<td><code>set(Object)</code></td>
<td><code>set(Object)</code></td>
<td>Like <code>dt.set({ year: 2016, month: 3 })</code></td>
</tr>
<tr>
<td>Change time zone</td>
<td><code>tz(String)</code></td>
<td><code>zone(string)</code></td>
<td>Luxon doesn't require a plugin</td>
</tr>
<tr>
<td>Change zone to utc</td>
<td><code>utc()</code></td>
<td><code>toUTC()</code></td>
<td></td>
</tr>
<tr>
<td>Change local zone</td>
<td><code>local()</code></td>
<td><code>toLocal()</code></td>
<td></td>
</tr>
<tr>
<td>Change offset</td>
<td><code>utcOffset(Number)</code></td>
<td>None</td>
<td>Set the zone instead</td>
</tr>
<tr>
<td>Change locale</td>
<td><code>locale(String)</code></td>
<td><code>setLocale(String)</code></td>
</tr>
</tbody>
</table>
<h3 id="query">Query</h3>
<table>
<thead>
<tr>
<th>Question</th>
<th>Moment</th>
<th>Luxon</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>Is this time before that time?</td>
<td><code>m1.isBefore(m2)</code></td>
<td><code>dt1 < dt2</code></td>
<td>The Moment versions of these take a unit. To do that in Luxon, use <code>startOf</code> on both instances.</td>
</tr>
<tr>
<td>Is this time after that time?</td>
<td><code>m1.isAfter(m2)</code></td>
<td><code>dt1 > dt2</code></td>
<td></td>
</tr>
<tr>
<td>Is this time the same or before that time?</td>
<td><code>m1.isSameOrBefore(m2)</code></td>
<td><code>dt1 <= dt2</code></td>
<td></td>
</tr>
<tr>
<td>Is this time the same or after that time?</td>
<td><code>m1.isSameOrAfter(m2)</code></td>
<td><code>dt1 >= dt2</code></td>
<td></td>
</tr>
<tr>
<td>Do these two times have the same [unit]?</td>
<td><code>m1.isSame(m2, unit)</code></td>
<td><code>dt1.hasSame(dt2, unit)</code></td>
<td></td>
</tr>
<tr>
<td>Is this time between these two times?</td>
<td><code>m1.isBetween(m2, m3)</code></td>
<td><code>Interval.fromDateTimes(dt2, dt3).contains(dt1)</code></td>
<td></td>
</tr>
<tr>
<td>Is this time inside a DST</td>
<td><code>isDST()</code></td>
<td><code>isInDST</code></td>
<td></td>
</tr>
<tr>
<td>Is this time's year a leap year?</td>
<td><code>isInLeapYear()</code></td>
<td><code>isInLeapYear</code></td>
<td></td>
</tr>
<tr>
<td>How many days are in this time's month?</td>
<td><code>daysInMonth()</code></td>
<td><code>daysInMonth</code></td>
<td></td>
</tr>
<tr>
<td>How many days are in this time's year?</td>
<td>None</td>
<td><code>daysInYear</code></td>
<td></td>
</tr>
<tr>
<td>--------------------------------------------</td>
<td>-------------------------</td>
<td>--------------------------------------------------</td>
<td>-------------------------------------------------------------------------------------------------</td>
</tr>
</tbody>
</table>
<h3 id="output">Output</h3>
<h4 id="basics">Basics</h4>
<p>See the <a href="./manual/formatting.html">formatting guide</a> for more about the string-outputting methods.</p>
<table>
<thead>
<tr>
<th>Output</th>
<th>Moment</th>
<th>Luxon</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td>simple string</td>
<td><code>toString()</code></td>
<td><code>toString()</code></td>
<td>Luxon just uses ISO 8601 for this. See Luxon's <code>toLocaleString()</code></td>
</tr>
<tr>
<td>full ISO 8601</td>
<td><code>iso()</code></td>
<td><code>toISO()</code></td>
<td></td>
</tr>
<tr>
<td>ISO date only</td>
<td>None</td>
<td><code>toISODate()</code></td>
<td></td>
</tr>
<tr>
<td>ISO time only</td>
<td>None</td>
<td><code>toISOTime()</code></td>
<td></td>
</tr>
<tr>
<td>custom format</td>
<td><code>format(...)</code></td>
<td><code>toFormat(...)</code></td>
<td></td>
</tr>
<tr>
<td>RFC 2822</td>
<td></td>
<td><code>toRFC2822()</code></td>
<td></td>
</tr>
<tr>
<td>HTTP date string</td>
<td></td>
<td><code>toHTTP()</code></td>
<td></td>
</tr>
<tr>
<td>JS Date</td>
<td><code>toDate()</code></td>
<td><code>toJSDate()</code></td>
<td></td>
</tr>
<tr>
<td>Epoch time</td>
<td><code>valueOf()</code></td>
<td><code>valueOf()</code></td>
<td></td>
</tr>
<tr>
<td>Object</td>
<td><code>toObject()</code></td>
<td><code>toObject()</code></td>
<td></td>
</tr>
<tr>
<td>Duration</td>
<td><code>diff(Moment)</code></td>
<td><code>diff(DateTime)</code></td>
<td>Moment's diff returns a count of milliseconds, but Luxon's returns a Duration. To replicate the Moment behavior, use <code>dt1.diff(d2).milliseconds</code>.</td>
</tr>
</tbody>
</table>
<h4 id="humanization">Humanization</h4>
<p>Luxon doesn't support these, and won't until the <a href="https://github.com/tc39/proposal-intl-relative-time">Relative Time Format</a> proposal lands in browsers.</p>
<table>
<thead>
<tr>
<th>Operation</th>
<th>Moment</th>
<th>Luxon</th>
</tr>
</thead>
<tbody>
<tr>
<td>Time from now</td>
<td><code>fromNow()</code></td>
<td>None</td>
</tr>
<tr>
<td>Time from other time</td>
<td><code>from(Moment)</code></td>
<td>None</td>
</tr>
<tr>
<td>Time to now</td>
<td><code>toNow()</code></td>
<td>None</td>
</tr>
<tr>
<td>Time to other time</td>
<td>`to(Moment)</td>
<td>None</td>
</tr>
<tr>
<td>"Calendar time"</td>
<td><code>calendar()</code></td>
<td>None</td>
</tr>
</tbody>
</table>
<h2 id="durations">Durations</h2>
<p>Moment Durations and Luxon Durations are broadly similar in purpose and capabilities. The main differences are:</p>
<ol>
<li>Luxon durations have more sophisticated conversion capabilities. They can convert from one set of units to another using <code>shiftTo</code>. They can also be configured to use different unit conversions. See <a href="./manual/math.html#duration-math">Duration Math</a> for more.</li>
<li>Luxon does not (yet) have an equivalent of Moment's <code>humanize</code> method</li>
<li>Like DateTimes, Luxon Durations have separate methods for creating objects from different sources.</li>
</ol>
<p>See the <a href="./manual/../../class/src/duration.js~Duration.html">Duration API docs</a> for more.</p>
<h2 id="intervals">Intervals</h2>
<p>Moment doesn't have direct support intervals, which must be provided by plugins like Twix or moment-range. Luxon's Intervals have similar capabilities to theirs, with the exception of the humanization features. See the <a href="./manual/../../class/src/interval.js~Interval.html">Interval API docs</a> for more.</p>
</div>
</div>
</div>
<footer class="footer">
Generated by <a href="https://esdoc.org">ESDoc<span data-ice="esdocVersion">(0.5.2)</span><img src="./image/esdoc-logo-mini-black.png"></a>
</footer>
<script src="script/search_index.js"></script>
<script src="script/search.js"></script>
<script src="script/pretty-print.js"></script>
<script src="script/inherited-summary.js"></script>
<script src="script/test-summary.js"></script>
<script src="script/inner-link.js"></script>
<script src="script/patch-for-local.js"></script>
</body>
</html>