datetime-offset
Version:
Javascript Class like C# DateTimeOffset Structure (mapping momnet-timezome)
89 lines (79 loc) • 3.51 kB
JavaScript
;
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;