This commit is contained in:
Iki
2026-06-11 16:39:34 +09:00
parent 0d5bf4623c
commit d7c95e4cb5

View File

@ -12,17 +12,45 @@ var fs = require("fs");
const SAPAdapter = require("../adapter/sapadapter.js");
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) {
if (!value) return "";
const str = String(value).trim();
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{6,7}$/.test(str)) {
const compact = parseCompactSapDate(str);
if (compact) return compact;
}
const d = new Date(str);
if (!isNaN(d.getTime())) {
const y = d.getFullYear();
const m = String(d.getMonth() + 1).padStart(2, "0");
const day = String(d.getDate()).padStart(2, "0");
return `${y}${m}${day}`;
return padSapDateParts(d.getFullYear(), d.getMonth() + 1, d.getDate());
}
return str;
}