Loading the parity record
Fetching the measured run — the pinned upstream oracle, every symbol and every case.
Fetching the measured run — the pinned upstream oracle, every symbol and every case.
Parity / Moment
Every number on this page was produced by running both implementations over the same cases: the real moment package pinned at 2.30.1 answers first, and its answer is the expectation the Go port is held to. Nothing is a hand-written expectation, so a new upstream release re-scores the port on its own. See Moment for the port's own documentation. Source: github.com/malcolmston/moment.
Not a generic diagram: every node below names an artefact of this harness — the pinned package it installed, the runner files it started, the case files it streamed, and the counts it wrote out.
| Case group | Cases | Match | Mismatch | Group parity |
|---|---|---|---|---|
| locale | 378 | 343 | 35 | 90.7% |
| duration | 342 | 334 | 8 | 97.7% |
| compare | 321 | 315 | 4 | 98.1% |
| format | 295 | 274 | 21 | 92.9% |
| manipulate | 213 | 209 | 1 | 98.1% |
| parse | 99 | 69 | 30 | 69.7% |
| relative | 83 | 77 | 6 | 92.8% |
Every exported symbol of the upstream package, and what the port offers for it. The upstream list is derived mechanically, never from a README: cd parity/moment/node
TZ=UTC node -e '
const m = require("moment");
console.log(Object.keys(m).sort().join("\n")); # 40 statics
console.log(Object.keys(m.fn).sort().join("\n")); # 89 moment.prototype methods
console.log(Object.keys(m.duration(1).constructor.prototype).sort().join("\n")); # 34 Duration methods
'. A symbol with no case is untested, never a match.
| Upstream symbol | Go symbol | Status | Cases | Note |
|---|---|---|---|---|
| moment.HTML5_FMT | — | missing | — | no exported table of HTML5 input format strings |
| moment.ISO_8601 | moment.ParseISO | differs | parse-iso-full-z, parse-iso-no-ms, parse-iso-offset (+30) | exposed as a parsing function, not a reusable format sentinel; 7/33 cases mismatch |
| moment.RFC_2822 | moment.ParseRFC2822 | differs | parse-rfc-basic, parse-rfc-no-day, parse-rfc-gmt (+2) | function rather than sentinel; two-digit-year RFC dates rejected (parse-rfc-two-digit-year); 1/5 cases mismatch |
| moment.calendarFormat | — | missing | — | bucket-selection hook not exposed; CalendarWith takes templates instead |
| moment.createFromInputFallback | — | missing | — | no Date-constructor fallback hook |
| moment.defaultFormat | — | missing | — | |
| moment.defaultFormatUtc | — | missing | — | |
| moment.defineLocale | moment.RegisterLocale | untested | — | registry mutation is global; excluded to keep the run deterministic |
| moment.deprecationHandler | — | missing | — | the port has no deprecation machinery |
| moment.duration | moment.NewDuration / NewDurationFromObject / ParseDuration | differs | parseDuration-0, parseDuration-1, parseDuration-2 (+16) | object and unit forms match; the string form rejects what moment accepts (parseDuration-13…-18); 7/19 cases mismatch |
| moment.fn | — | missing | — | no prototype handle (Moment is a struct) |
| moment.invalid | moment.Invalid | untested | — | reachable, but every invalid value in the suite comes from a failed parse |
| moment.isDate | moment.IsDate | match | isDate-moment, isDate-duration, isDate-date | |
| moment.isDuration | moment.IsDuration | match | isDuration-moment, isDuration-duration, isDuration-date | |
| moment.isMoment | moment.IsMoment | match | isMoment-moment, isMoment-duration, isMoment-date | |
| moment.lang | — | missing | — | deprecated alias of locale |
| moment.langData | — | missing | — | deprecated alias of localeData |
| moment.locale | moment.SetGlobalLocale / moment.GlobalLocale | untested | — | global mutation; per-value Moment.Locale is tested instead |
| moment.localeData | moment.LookupLocale + the moment.Months/Weekdays/Ordinal/LongDateFormat/Meridiem queries | differs | months-en, monthsShort-en, weekdays-en (+321) | shape differs (free functions, not an object); ru/hi month lists and ru/tr/fr ordinals disagree; 26/324 cases mismatch |
| moment.locales | moment.AvailableLocales | differs | — | the port bundles ~21 locales against moment's ~140 |
| moment.max | moment.Max | match | max-three | |
| moment.min | moment.Min | match | min-three | |
| moment.momentProperties | — | missing | — | |
| moment.months | moment.Months | differs | months-en, monthsShort-en, months-en-gb (+33) | ru returns nominative forms where moment returns genitive (months-ru); hi spellings differ (months-hi); 3/36 cases mismatch |
| moment.monthsShort | moment.MonthsShort | differs | monthsShort-en, monthsShort-en-gb, monthsShort-fr (+15) | ru abbreviations differ (monthsShort-ru); 1/18 cases mismatch |
| moment.normalizeUnits | moment.NormalizeUnit | differs | normalizeUnit-days, normalizeUnit-d, normalizeUnit-D (+10) | "e" is not recognised (moment maps it to "weekday"); 1/13 cases mismatch |
| moment.now | — | missing | — | replaced by the Clock interface / NowWith; deliberately untestable here |
| moment.parseTwoDigitYear | — | missing | — | the pivot is not overridable, though YY parsing itself matches |
| moment.parseZone | moment.ParseZone | match | parseZone-0, parseZone-1, parseZone-2 (+2) | |
| moment.relativeTimeRounding | — | missing | — | |
| moment.relativeTimeThreshold | moment.RelativeTimeThreshold / SetRelativeTimeThreshold | untested | — | global mutation; default thresholds are exercised through from-* |
| moment.suppressDeprecationWarnings | — | missing | — | |
| moment.unix | moment.Unix | untested | — | the static seconds constructor; Moment.Unix (the getter) is tested |
| moment.updateLocale | — | missing | — | RegisterLocale replaces wholesale rather than patching |
| moment.updateOffset | — | missing | — | |
| moment.utc | moment.Parse / Moment.UTC | differs | parse-iso-full-z, parse-iso-no-ms, parse-iso-offset (+30) | see the ISO divergences below; 7/33 cases mismatch |
| moment.version | — | missing | — | no exported version constant (a VERSION file exists) |
| moment.weekdays | moment.Weekdays | match | weekdays-en, weekdaysShort-en, weekdaysMin-en (+51) | |
| moment.weekdaysMin | moment.WeekdaysMin | match | weekdaysMin-en, weekdaysMin-en-gb, weekdaysMin-fr (+15) | |
| moment.weekdaysShort | moment.WeekdaysShort | match | weekdaysShort-en, weekdaysShort-en-gb, weekdaysShort-fr (+15) | |
| moment.prototype.add | moment.Moment.Add | match | add-year-1, add-year-3, add-year-0 (+45) | includes month/year day clamping (clamp-*) |
| moment.prototype.calendar | moment.Moment.Calendar / CalendarWith / CalendarNow | differs | calendar--8d, calendar--7d, calendar--2d (+7) | en matches; ar/hi differ because the port does not localise digits (calendarLocale-ar, calendarLocale-hi) |
| moment.prototype.clone | moment.Moment.Clone | match | serialize-clone | |
| moment.prototype.creationData | moment.Moment.CreationData | untested | — | field set differs (no parsing flags), so no comparable case |
| moment.prototype.date | moment.Moment.Date / SetDate | match | setDate, setDate-clamped | |
| moment.prototype.dates | — | missing | — | deprecated alias of date |
| moment.prototype.day | moment.Moment.Weekday / SetWeekday | match | setDayOfYear, setDayOfYear-366, setWeekday (+1) | |
| moment.prototype.dayOfYear | moment.Moment.DayOfYear / SetDayOfYear | match | setDayOfYear, setDayOfYear-366 | |
| moment.prototype.days | — | missing | — | deprecated alias of day |
| moment.prototype.daysInMonth | moment.Moment.DaysInMonth | match | components-a, components-b, components-c (+3) | 3/6 cases mismatch |
| moment.prototype.diff | moment.Moment.Diff / DiffInt / DiffDuration | match | diff-year-same, diffFloat-year-same, diff-year-ms (+195) | all 9 units, integer and float, in both directions |
| moment.prototype.endOf | moment.Moment.EndOf | match | endOf-year-a, endOf-year-b, endOf-year-c (+41) | all 11 units |
| moment.prototype.eraAbbr | — | missing | — | no era support |
| moment.prototype.eraName | — | missing | — | no era support |
| moment.prototype.eraNarrow | — | missing | — | no era support |
| moment.prototype.eraYear | — | missing | — | no era support |
| moment.prototype.format | moment.Moment.Format | differs | token-YY-a, token-YY-b, token-YY-c (+273) | zz, l, ll, lll, llll and the empty format string diverge; the other 62 tokens match; 21/276 cases mismatch |
| moment.prototype.from | moment.Moment.From | differs | from-future-0s, from-past-0s, from-future-1s (+65) | zero-length and the 46-day / 548-day buckets disagree; 5/68 cases mismatch |
| moment.prototype.fromNow | moment.Moment.FromNow | untested | — | depends on "now"; the port can inject a clock but moment cannot, so From carries the coverage |
| moment.prototype.get | moment.Moment.Get | differs | get-year, get-month, get-date (+8) | declared deviation: get("month") is 0-based upstream, 1-based in the port (get-month) |
| moment.prototype.hasAlignedHourOffset | — | missing | — | |
| moment.prototype.hour | moment.Moment.Hour / SetHour | match | — | |
| moment.prototype.hours | — | missing | — | deprecated alias of hour |
| moment.prototype.inspect | — | missing | — | no debug-representation method |
| moment.prototype.invalidAt | — | missing | — | the port reports no per-component failure index |
| moment.prototype.isAfter | moment.Moment.IsAfter | match | isAfter-same, isAfter-ms, isAfter-minute (+5) | |
| moment.prototype.isBefore | moment.Moment.IsBefore | match | isBefore-same, isBefore-ms, isBefore-minute (+5) | |
| moment.prototype.isBetween | moment.Moment.IsBetween | match | isBetween-inside, isBetween-outside, isBetween-on-lower-exclusive (+4) | declared deviation for reversed bounds (isBetween-reversed-bounds); the port has no granularity argument |
| moment.prototype.isDST | moment.Moment.IsDST | untested | — | the suite pins TZ=UTC, so no DST case is comparable without a tz database on the node side |
| moment.prototype.isDSTShifted | — | missing | — | deprecated upstream |
| moment.prototype.isLeapYear | moment.Moment.IsLeapYear | match | components-a, components-b, components-c (+3) | 3/6 cases mismatch |
| moment.prototype.isLocal | moment.Moment.IsLocal | untested | — | host-zone dependent |
| moment.prototype.isSame | moment.Moment.IsSame / IsSameUnit | match | isSame-same, isSame-ms, isSame-minute (+54) | instant form and the unit-granularity form, all 11 units |
| moment.prototype.isSameOrAfter | moment.Moment.IsSameOrAfter | match | isSameOrAfter-same, isSameOrAfter-ms, isSameOrAfter-minute (+5) | |
| moment.prototype.isSameOrBefore | moment.Moment.IsSameOrBefore | match | isSameOrBefore-same, isSameOrBefore-ms, isSameOrBefore-minute (+5) | |
| moment.prototype.isUTC | moment.Moment.IsUTC | match | components-a, components-b, components-c (+3) | compared inside the components-* cases; 3/6 cases mismatch |
| moment.prototype.isUtc | moment.Moment.IsUTC | match | components-a, components-b, components-c (+3) | alias of isUTC; 3/6 cases mismatch |
| moment.prototype.isUtcOffset | — | missing | — | |
| moment.prototype.isValid | moment.Moment.IsValid | differs | validity-oor-feb-30, validity-oor-feb-29-nonleap, validity-oor-feb-29-leap (+24) | the headline divergence: out-of-range token input is normalised instead of invalidated; 8/27 cases mismatch |
| moment.prototype.isoWeek | moment.Moment.ISOWeekNumber / ISOWeek | match | components-a, components-b, components-c (+5) | 3/8 cases mismatch |
| moment.prototype.isoWeekYear | moment.Moment.ISOWeekYear | match | components-a, components-b, components-c (+3) | 3/6 cases mismatch |
| moment.prototype.isoWeekday | moment.Moment.ISOWeekday / SetISOWeekday | match | setISOWeekday, setISOWeekday-7 | |
| moment.prototype.isoWeeks | — | missing | — | alias of isoWeek |
| moment.prototype.isoWeeksInISOWeekYear | — | missing | — | |
| moment.prototype.isoWeeksInYear | moment.Moment.ISOWeeksInYear | differs | components-a, components-b, components-c (+3) | returns 53 where moment returns 52 for ISO-week-year 2020 and 2015 (components-d, -e, -f); 3/6 cases mismatch |
| moment.prototype.lang | — | missing | — | deprecated alias of locale |
| moment.prototype.local | moment.Moment.Local | untested | — | host-zone dependent |
| moment.prototype.locale | moment.Moment.Locale / LocaleName | differs | formatLocale-en-LLLL, calendarLocale-en, formatLocale-en-gb-LLLL (+33) | works, but zh-cn/pl/cs/ar/hi long-date output disagrees (formatLocale-*); 7/36 cases mismatch |
| moment.prototype.localeData | moment.Moment.LocaleData | untested | — | returns a *Locale struct with no comparable JSON shape |
| moment.prototype.max | — | missing | — | deprecated prototype form (moment.Max exists) |
| moment.prototype.millisecond | moment.Moment.Millisecond / SetMillisecond | match | set-year-2000, set-year-2020, set-month-3 (+12) | |
| moment.prototype.milliseconds | — | missing | — | deprecated alias |
| moment.prototype.min | — | missing | — | deprecated prototype form (moment.Min exists) |
| moment.prototype.minute | moment.Moment.Minute / SetMinute | match | set-year-2000, set-year-2020, set-month-3 (+12) | |
| moment.prototype.minutes | — | missing | — | deprecated alias |
| moment.prototype.month | moment.Moment.Month / SetMonth | match | setMonth1-apr-from-may31, setMonth1-feb-from-jan31 | clamping on assignment matches (setMonth1-*) |
| moment.prototype.months | — | missing | — | deprecated alias of month |
| moment.prototype.parseZone | moment.ParseZone | match | parseZone-0, parseZone-1, parseZone-2 (+2) | package-level in the port, not a method |
| moment.prototype.parsingFlags | — | missing | — | no parsing-flag introspection |
| moment.prototype.quarter | moment.Moment.Quarter / SetQuarter | match | setQuarter, setQuarter-4 |
Every case the harness streamed to both runners, with the exact upstream symbol and Go symbol it exercised. A deliberate, documented difference is a deviation and is counted apart from a mismatch.
| Case | Group | Upstream symbol | Go symbol | Status | Note |
|---|---|---|---|---|---|
| diff-year-same | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-year-same | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-year-ms | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-year-ms | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-year-minute | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-year-minute | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-year-hours | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-year-hours | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-year-days | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-year-days | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-year-months | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-year-months | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-year-years | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-year-years | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-year-backwards | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-year-backwards | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-year-month-end | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-year-month-end | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-year-partial-month | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-year-partial-month | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-year-leap | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-year-leap | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-quarter-same | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-quarter-same | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-quarter-ms | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-quarter-ms | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-quarter-minute | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-quarter-minute | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-quarter-hours | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-quarter-hours | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-quarter-days | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-quarter-days | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-quarter-months | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-quarter-months | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-quarter-years | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-quarter-years | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-quarter-backwards | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-quarter-backwards | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-quarter-month-end | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-quarter-month-end | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-quarter-partial-month | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-quarter-partial-month | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-quarter-leap | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-quarter-leap | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-month-same | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-month-same | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-month-ms | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-month-ms | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-month-minute | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-month-minute | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-month-hours | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-month-hours | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-month-days | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-month-days | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-month-months | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-month-months | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-month-years | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-month-years | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-month-backwards | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-month-backwards | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-month-month-end | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-month-month-end | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-month-partial-month | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-month-partial-month | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-month-leap | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-month-leap | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-week-same | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-week-same | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-week-ms | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-week-ms | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-week-minute | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-week-minute | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-week-hours | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-week-hours | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-week-days | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-week-days | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-week-months | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-week-months | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-week-years | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-week-years | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-week-backwards | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-week-backwards | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-week-month-end | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-week-month-end | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-week-partial-month | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-week-partial-month | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-week-leap | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-week-leap | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-day-same | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-day-same | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-day-ms | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-day-ms | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-day-minute | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-day-minute | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-day-hours | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-day-hours | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-day-days | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-day-days | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match | |
| diff-day-months | compare | moment.prototype.diff | moment.Moment.DiffInt | match | |
| diffFloat-day-months | compare | moment.prototype.diff (asFloat) | moment.Moment.Diff | match |