moment_wrapper.ts 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. /* tslint:disable:import-blacklist ban ban-types */
  2. import moment, { MomentInput, DurationInputArg1 } from 'moment';
  3. export interface DateTimeBuiltinFormat {
  4. __momentBuiltinFormatBrand: any;
  5. }
  6. export const ISO_8601: DateTimeBuiltinFormat = moment.ISO_8601;
  7. export type DateTimeInput = Date | string | number | Array<string | number> | DateTime; // null | undefined
  8. export type FormatInput = string | DateTimeBuiltinFormat | undefined;
  9. export type DurationInput = string | number | DateTimeDuration;
  10. export type DurationUnit =
  11. | 'year'
  12. | 'years'
  13. | 'y'
  14. | 'month'
  15. | 'months'
  16. | 'M'
  17. | 'week'
  18. | 'weeks'
  19. | 'w'
  20. | 'day'
  21. | 'days'
  22. | 'd'
  23. | 'hour'
  24. | 'hours'
  25. | 'h'
  26. | 'minute'
  27. | 'minutes'
  28. | 'm'
  29. | 'second'
  30. | 'seconds'
  31. | 's'
  32. | 'millisecond'
  33. | 'milliseconds'
  34. | 'ms'
  35. | 'quarter'
  36. | 'quarters'
  37. | 'Q';
  38. export interface DateTimeLocale {
  39. firstDayOfWeek: () => number;
  40. }
  41. export interface DateTimeDuration {
  42. asHours: () => number;
  43. hours: () => number;
  44. minutes: () => number;
  45. seconds: () => number;
  46. }
  47. export interface DateTime extends Object {
  48. add: (amount?: DateTimeInput, unit?: DurationUnit) => DateTime;
  49. set: (unit: DurationUnit, amount: DateTimeInput) => void;
  50. diff: (amount: DateTimeInput, unit?: DurationUnit, truncate?: boolean) => number;
  51. endOf: (unitOfTime: DurationUnit) => DateTime;
  52. format: (formatInput?: FormatInput) => string;
  53. fromNow: (withoutSuffix?: boolean) => string;
  54. from: (formaInput: DateTimeInput) => string;
  55. isSame: (input?: DateTimeInput, granularity?: DurationUnit) => boolean;
  56. isValid: () => boolean;
  57. local: () => DateTime;
  58. locale: (locale: string) => DateTime;
  59. startOf: (unitOfTime: DurationUnit) => DateTime;
  60. subtract: (amount?: DateTimeInput, unit?: DurationUnit) => DateTime;
  61. toDate: () => Date;
  62. toISOString: () => string;
  63. isoWeekday: (day?: number | string) => number | string;
  64. valueOf: () => number;
  65. unix: () => number;
  66. utc: () => DateTime;
  67. utcOffset: () => number;
  68. hour?: () => number;
  69. }
  70. export const setLocale = (language: string) => {
  71. moment.locale(language);
  72. };
  73. export const getLocaleData = (): DateTimeLocale => {
  74. return moment.localeData();
  75. };
  76. export const isDateTime = (value: any): value is DateTime => {
  77. return moment.isMoment(value);
  78. };
  79. export const toUtc = (input?: DateTimeInput, formatInput?: FormatInput): DateTime => {
  80. return moment.utc(input as MomentInput, formatInput) as DateTime;
  81. };
  82. export const toDuration = (input?: DurationInput, unit?: DurationUnit): DateTimeDuration => {
  83. return moment.duration(input as DurationInputArg1, unit) as DateTimeDuration;
  84. };
  85. export const dateTime = (input?: DateTimeInput, formatInput?: FormatInput): DateTime => {
  86. return moment(input as MomentInput, formatInput) as DateTime;
  87. };