upd
This commit is contained in:
@ -12,17 +12,45 @@ var fs = require("fs");
|
|||||||
const SAPAdapter = require("../adapter/sapadapter.js");
|
const SAPAdapter = require("../adapter/sapadapter.js");
|
||||||
const sapadapter = new SAPAdapter();
|
const sapadapter = new SAPAdapter();
|
||||||
|
|
||||||
|
function padSapDateParts(year, month, day) {
|
||||||
|
const y = String(year);
|
||||||
|
const m = String(month).padStart(2, "0");
|
||||||
|
const d = String(day).padStart(2, "0");
|
||||||
|
if (!/^\d{4}$/.test(y) || Number(m) < 1 || Number(m) > 12 || Number(d) < 1 || Number(d) > 31) {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
return `${y}${m}${d}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
function parseCompactSapDate(str) {
|
||||||
|
const year = str.slice(0, 4);
|
||||||
|
const rest = str.slice(4);
|
||||||
|
if (rest.length === 4) {
|
||||||
|
return padSapDateParts(year, rest.slice(0, 2), rest.slice(2));
|
||||||
|
}
|
||||||
|
if (rest.length === 3) {
|
||||||
|
const twoDigitMonth = padSapDateParts(year, rest.slice(0, 2), rest.slice(2));
|
||||||
|
if (twoDigitMonth) return twoDigitMonth;
|
||||||
|
return padSapDateParts(year, rest.slice(0, 1), rest.slice(1));
|
||||||
|
}
|
||||||
|
if (rest.length === 2) {
|
||||||
|
return padSapDateParts(year, rest.slice(0, 1), rest.slice(1));
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
function formatSapDate(value) {
|
function formatSapDate(value) {
|
||||||
if (!value) return "";
|
if (!value) return "";
|
||||||
const str = String(value).trim();
|
const str = String(value).trim();
|
||||||
if (/^\d{8}$/.test(str)) return str;
|
if (/^\d{8}$/.test(str)) return str;
|
||||||
if (/^\d{4}-\d{2}-\d{2}/.test(str)) return str.slice(0, 10).replace(/-/g, "");
|
if (/^\d{4}-\d{2}-\d{2}/.test(str)) return str.slice(0, 10).replace(/-/g, "");
|
||||||
|
if (/^\d{6,7}$/.test(str)) {
|
||||||
|
const compact = parseCompactSapDate(str);
|
||||||
|
if (compact) return compact;
|
||||||
|
}
|
||||||
const d = new Date(str);
|
const d = new Date(str);
|
||||||
if (!isNaN(d.getTime())) {
|
if (!isNaN(d.getTime())) {
|
||||||
const y = d.getFullYear();
|
return padSapDateParts(d.getFullYear(), d.getMonth() + 1, d.getDate());
|
||||||
const m = String(d.getMonth() + 1).padStart(2, "0");
|
|
||||||
const day = String(d.getDate()).padStart(2, "0");
|
|
||||||
return `${y}${m}${day}`;
|
|
||||||
}
|
}
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user