@antv/data-wizard
Version:
A js/ts library for data processing
66 lines (65 loc) • 2.46 kB
JavaScript
// TODO: better date validator, not regex solution. Whole column valid.
// examples:
// 1999-366 false, 2004-366 true;
// 199501,199502,199503,199519 -> 199519 19 as month -> false;
import { __read, __spreadArray } from "tslib";
var delimiter = '([-_./\\s])';
var year = '(18|19|20)\\d{2}';
var month = '(0?[1-9]|1[012])';
var day = '(0?[1-9]|[12]\\d|3[01])';
var week = '([0-4]\\d|5[0-2])';
var weekday = '([1-7])';
var hour = '(0?\\d|1\\d|2[0-4])';
var minute = '(0?\\d|[012345]\\d)';
var second = minute;
var millisecond = '\\d{1,4}';
var yearday = '((([0-2]\\d|3[0-5])\\d)|36[0-6])';
var offset = "(Z|[+-]" + hour + "(:" + minute + ")?)";
// https://www.cl.cam.ac.uk/~mgk25/iso-time.html
export var getIsoDates = function (isStrict) {
if (isStrict === void 0) { isStrict = true; }
return [
// 1991
"" + year,
// 1999-W12-7
// TODO: Date.parse do not parse this format
"" + year + delimiter + (isStrict ? '' : '?') + "W" + week + "(" + delimiter + (isStrict ? '' : '?') + weekday + ")?",
// 12-22-1999
"" + month + delimiter + (isStrict ? '' : '?') + day + delimiter + (isStrict ? '' : '?') + year,
// 1999-12-22 19991222
"" + year + delimiter + (isStrict ? '' : '?') + month + delimiter + (isStrict ? '' : '?') + day,
// 1999-12
"" + year + delimiter + (isStrict ? '' : '?') + month,
// 1999-200
"" + year + delimiter + (isStrict ? '' : '?') + yearday,
];
};
export var getIsoTimes = function (isStrict) {
if (isStrict === void 0) { isStrict = true; }
return [
// 23:20:20Z 23:20:20+08:00 23:20:20-08:00
hour + ":" + (isStrict ? '' : '?') + minute + ":" + (isStrict ? '' : '?') + second + "([.,]" + millisecond + ")?" + offset + "?",
// 23:20+08
hour + ":" + (isStrict ? '' : '?') + minute + "?" + offset,
];
};
var isoDates = getIsoDates();
var isoTimes = getIsoTimes();
var formatStr = __spreadArray(__spreadArray([], __read(isoDates)), __read(isoTimes));
isoDates.forEach(function (d) {
isoTimes.forEach(function (t) {
formatStr.push(d + "[T\\s]" + t);
});
});
var formats = formatStr.map(function (item) {
return new RegExp("^" + item + "$");
});
export function isDateString(value) {
for (var i = 0; i < formats.length; i += 1) {
var format = formats[i];
if (format.test(value.trim())) {
return true;
}
}
return false;
}