UNPKG

@antv/data-wizard

Version:
91 lines (90 loc) 3.23 kB
import { __assign, __extends } from "tslib"; import { format } from 'date-fns'; import { BasicRandom } from './basic-random'; import { initOptions } from './utils'; import { getDateTimeDB } from './database'; /** * Generator for date * @public */ var DateTimeRandom = /** @class */ (function (_super) { __extends(DateTimeRandom, _super); function DateTimeRandom() { var _this = _super !== null && _super.apply(this, arguments) || this; /** * return a random date which format is yyyy-MM-dd */ _this.database = getDateTimeDB(); return _this; } /** * return a random full date {@link https://tools.ietf.org/html/rfc3339#section-5.6 | full-date} * @param options - the params */ DateTimeRandom.prototype.date = function (options) { return this.datetime(__assign(__assign({}, options), { format: 'yyyy-MM-dd' })); }; /** * return a random full time {@link https://tools.ietf.org/html/rfc3339#section-5.6 | full-time} * @param options - the params */ DateTimeRandom.prototype.time = function (options) { var opts = initOptions({ short: false }, options); return this.datetime(__assign(__assign({}, options), { format: opts.short ? 'HH:mm:ss' : 'HH:mm:ssXXX' })); }; /** * return a random date-time (full-data T fulltime) {@link https://tools.ietf.org/html/rfc3339#section-5.6 | date-time} * * @remarks * {@link https://date-fns.org/v2.0.1/docs/format | format} * @param options - the params */ DateTimeRandom.prototype.datetime = function (options) { var opts = initOptions({ format: "yyyy-MM-dd'T'HH:mm:ssXXX" }, options); var timestamp = this.timestamp(opts); return format(timestamp, opts.format); }; /** * return a random timestamp * @param options - the params */ DateTimeRandom.prototype.timestamp = function (options) { var opts = initOptions({ min: 0, max: new Date().getTime() }, options); return this.natural(opts); }; /** * return a random weekday * * @example * ```javascript * new DateTimeRandom().weekday({ locale: 'zh-CN' }) // 星期一 * new DateTimeRandom().weekday({ abbr: true }) // Mon. * ``` * @param options - the params * @public */ DateTimeRandom.prototype.weekday = function (options) { var _a = initOptions({ abbr: false, locale: 'en-US' }, options), locale = _a.locale, abbr = _a.abbr; var list = this.database.weekday[locale]; var target = this.pickone(list); if (abbr) return target[1] || target[0]; return target[0]; }; /** * return a random month * * @param options - the params * @public */ DateTimeRandom.prototype.month = function (options) { var _a = initOptions({ abbr: false, locale: 'en-US' }, options), locale = _a.locale, abbr = _a.abbr; var list = this.database.month[locale]; var target = this.pickone(list); if (abbr) return target[1] || target[0]; return target[0]; }; return DateTimeRandom; }(BasicRandom)); export { DateTimeRandom };