UNPKG

datetime-offset

Version:

Javascript Class like C# DateTimeOffset Structure (mapping momnet-timezome)

89 lines (79 loc) 3.51 kB
'use strict'; exports.__esModule = true; var _momentTimezone = require('moment-timezone'); var _momentTimezone2 = _interopRequireDefault(_momentTimezone); var _timezoneConsts = require('./timezone-consts'); var _timezoneConsts2 = _interopRequireDefault(_timezoneConsts); var _errorConsts = require('./error-consts'); var _errorConsts2 = _interopRequireDefault(_errorConsts); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const defaultFormat = 'YYYY-MM-DD HH:mm:ss'; class DateTimeOffset { constructor(date, options = {}) { const timezone = options.timezone || 'GMT'; const format = options.format || defaultFormat; const moment = _momentTimezone2.default.tz.setDefault(_timezoneConsts2.default[timezone]); this.datetime = moment(date, format).tz(_timezoneConsts2.default[timezone]); this.timezone = _timezoneConsts2.default[timezone]; return this; } toString(timezone = 'GMT', format = defaultFormat) { if (!_timezoneConsts2.default[timezone]) throw new Error(_errorConsts2.default.UNSUPPORTED_TZ); return this.datetime.tz(_timezoneConsts2.default[timezone]).format(format); } addYears(number) { if (arguments.length !== 1) throw new Error(_errorConsts2.default.REQUIRE_MORE_ARG); if (typeof number !== 'number') throw new Error(_errorConsts2.default.REQUIRE_NUMBER_ARG); this.datetime.add(number, 'years'); return this; } addMonth(number) { if (arguments.length !== 1) throw new Error(_errorConsts2.default.REQUIRE_MORE_ARG); if (typeof number !== 'number') throw new Error(_errorConsts2.default.REQUIRE_NUMBER_ARG); this.datetime.add(number, 'months'); return this; } addDays(number) { if (arguments.length !== 1) throw new Error(_errorConsts2.default.REQUIRE_MORE_ARG); if (typeof number !== 'number') throw new Error(_errorConsts2.default.REQUIRE_NUMBER_ARG); this.datetime.add(number, 'days'); return this; } addHours(number) { if (arguments.length !== 1) throw new Error(_errorConsts2.default.REQUIRE_MORE_ARG); if (typeof number !== 'number') throw new Error(_errorConsts2.default.REQUIRE_NUMBER_ARG); this.datetime.add(number, 'hours'); return this; } addMinutes(number) { if (arguments.length !== 1) throw new Error(_errorConsts2.default.REQUIRE_MORE_ARG); if (typeof number !== 'number') throw new Error(_errorConsts2.default.REQUIRE_NUMBER_ARG); this.datetime.add(number, 'minutes'); return this; } addSeconds(number) { if (arguments.length !== 1) throw new Error(_errorConsts2.default.REQUIRE_MORE_ARG); if (typeof number !== 'number') throw new Error(_errorConsts2.default.REQUIRE_NUMBER_ARG); this.datetime.add(number, 'seconds'); return this; } static compare(dateTimeOffsetA, dateTimeOffsetB) { throw new Error('static compare undefined'); } compareTo(datetimeOffset) { if (arguments.length < 1) throw new Error(_errorConsts2.default.REQUIRE_MORE_ARG); if (arguments.length > 1) throw new Error(_errorConsts2.default.TOO_MANY_ARG); if (!(datetimeOffset instanceof DateTimeOffset)) { throw new Error(_errorConsts2.default.REQUIRE_DATETIMEOFFSET_ARG); } const result = this.datetime - datetimeOffset.datetime; return result; } equals(datetimeOffset) { throw new Error('equals undefined'); } static equals(datetimeOffsetA, dateTimeOffsetB) { throw new Error('static equals undefined'); } } exports.default = DateTimeOffset;