c109313502f94a892e837f51fa620ae04e6d426498b13105ebf4cb584c1456247a633c14102a5fe8ba5be2bab5d0bf8ed3185464905c48d3f159bcb3627aa7 1.0 KB

1234567891011121314151617181920212223242526
  1. import { createLocal } from '../create/local';
  2. import { cloneWithOffset } from '../units/offset';
  3. import isFunction from '../utils/is-function';
  4. import { hooks } from '../utils/hooks';
  5. export function getCalendarFormat(myMoment, now) {
  6. var diff = myMoment.diff(now, 'days', true);
  7. return diff < -6 ? 'sameElse' :
  8. diff < -1 ? 'lastWeek' :
  9. diff < 0 ? 'lastDay' :
  10. diff < 1 ? 'sameDay' :
  11. diff < 2 ? 'nextDay' :
  12. diff < 7 ? 'nextWeek' : 'sameElse';
  13. }
  14. export function calendar (time, formats) {
  15. // We want to compare the start of today, vs this.
  16. // Getting start-of-today depends on whether we're local/utc/offset or not.
  17. var now = time || createLocal(),
  18. sod = cloneWithOffset(now, this).startOf('day'),
  19. format = hooks.calendarFormat(this, sod) || 'sameElse';
  20. var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);
  21. return this.format(output || this.localeData().calendar(format, this, createLocal(now)));
  22. }