นำเข้าไฟล์เอ็กเซลช่องวันที่ปรับให้รองรับทุก format
This commit is contained in:
parent
3a50a95e7c
commit
737728e9f0
2 changed files with 55 additions and 33 deletions
|
|
@ -2966,13 +2966,13 @@ export class DevelopmentController extends Controller {
|
|||
.GetData(request, `/org/unauthorize/officer/citizen/${citizenId}`)
|
||||
.then(async (x: any) => {
|
||||
development = Object.assign(development, x);
|
||||
development.dateStart = Extension.checkDateTime(item["วันที่เริ่มต้น"], "dd/MM/yyyy") as Date;
|
||||
development.dateEnd = Extension.checkDateTime(item["วันที่สิ้นสุด"], "dd/MM/yyyy")as Date;
|
||||
development.dateStart = Extension.checkDateTime(item["วันที่เริ่มต้น"]) as Date;
|
||||
development.dateEnd = Extension.checkDateTime(item["วันที่สิ้นสุด"])as Date;
|
||||
development.order =
|
||||
item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"] == null
|
||||
? null
|
||||
: item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"].toString();
|
||||
development.dateOrder = Extension.checkDateTime(item["คำสั่งลงวันที่/หนังสืออนุมัติลงวันที่"], "dd/MM/yyyy")as Date;
|
||||
development.dateOrder = Extension.checkDateTime(item["คำสั่งลงวันที่/หนังสืออนุมัติลงวันที่"])as Date;
|
||||
development.trainingDays =
|
||||
item["จำนวนวันที่อบรม"] == null ? null : item["จำนวนวันที่อบรม"].toString();
|
||||
development.posLevelId = x.posLevelId;
|
||||
|
|
@ -2998,15 +2998,15 @@ export class DevelopmentController extends Controller {
|
|||
development.lastName = item["นามสกุล"] == null ? null : item["นามสกุล"].toString();
|
||||
development.position = item["ตำแหน่ง"] == null ? null : item["ตำแหน่ง"].toString();
|
||||
development.org = item["สังกัด"] == null ? null : item["สังกัด"].toString();
|
||||
development.dateStart = Extension.checkDateTime(item["วันที่เริ่มต้น"], "dd/MM/yyyy") as Date;
|
||||
development.dateEnd = Extension.checkDateTime(item["วันที่สิ้นสุด"], "dd/MM/yyyy") as Date;
|
||||
development.dateStart = Extension.checkDateTime(item["วันที่เริ่มต้น"]) as Date;
|
||||
development.dateEnd = Extension.checkDateTime(item["วันที่สิ้นสุด"]) as Date;
|
||||
development.citizenId = citizenId;
|
||||
development.type = "OFFICER" == null ? _null : "OFFICER";
|
||||
development.order =
|
||||
item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"] == null
|
||||
? null
|
||||
: item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"].toString();
|
||||
development.dateOrder = Extension.checkDateTime(item["คำสั่งลงวันที่/หนังสืออนุมัติลงวันที่"], "dd/MM/yyyy") as Date;
|
||||
development.dateOrder = Extension.checkDateTime(item["คำสั่งลงวันที่/หนังสืออนุมัติลงวันที่"]) as Date;
|
||||
development.trainingDays =
|
||||
item["จำนวนวันที่อบรม"] == null ? null : item["จำนวนวันที่อบรม"].toString();
|
||||
development.posLevelId = x.posLevelId;
|
||||
|
|
@ -3030,13 +3030,13 @@ export class DevelopmentController extends Controller {
|
|||
.GetData(request, `/org/unauthorize/employee/citizen/${citizenId}`)
|
||||
.then(async (x: any) => {
|
||||
development = Object.assign(development, x);
|
||||
development.dateStart = Extension.checkDateTime(item["วันที่เริ่มต้น"], "dd/MM/yyyy") as Date;
|
||||
development.dateEnd = Extension.checkDateTime(item["วันที่สิ้นสุด"], "dd/MM/yyyy") as Date;
|
||||
development.dateStart = Extension.checkDateTime(item["วันที่เริ่มต้น"]) as Date;
|
||||
development.dateEnd = Extension.checkDateTime(item["วันที่สิ้นสุด"]) as Date;
|
||||
development.order =
|
||||
item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"] == null
|
||||
? null
|
||||
: item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"].toString();
|
||||
development.dateOrder = Extension.checkDateTime(item["คำสั่งลงวันที่/หนังสืออนุมัติลงวันที่"], "dd/MM/yyyy") as Date;
|
||||
development.dateOrder = Extension.checkDateTime(item["คำสั่งลงวันที่/หนังสืออนุมัติลงวันที่"]) as Date;
|
||||
development.trainingDays =
|
||||
item["จำนวนวันที่อบรม"] == null ? null : item["จำนวนวันที่อบรม"].toString();
|
||||
development.posLevelId = null;
|
||||
|
|
@ -3061,15 +3061,15 @@ export class DevelopmentController extends Controller {
|
|||
development.lastName = item["นามสกุล"] == null ? null : item["นามสกุล"].toString();
|
||||
development.position = item["ตำแหน่ง"] == null ? null : item["ตำแหน่ง"].toString();
|
||||
development.org = item["สังกัด"] == null ? null : item["สังกัด"].toString();
|
||||
development.dateStart = Extension.checkDateTime(item["วันที่เริ่มต้น"], "dd/MM/yyyy") as Date;
|
||||
development.dateEnd = Extension.checkDateTime(item["วันที่สิ้นสุด"], "dd/MM/yyyy") as Date;
|
||||
development.dateStart = Extension.checkDateTime(item["วันที่เริ่มต้น"]) as Date;
|
||||
development.dateEnd = Extension.checkDateTime(item["วันที่สิ้นสุด"]) as Date;
|
||||
development.citizenId = citizenId;
|
||||
development.type = "EMPLOYEE" == null ? _null : "EMPLOYEE";
|
||||
development.order =
|
||||
item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"] == null
|
||||
? null
|
||||
: item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"].toString();
|
||||
development.dateOrder = Extension.checkDateTime(item["คำสั่งลงวันที่/หนังสืออนุมัติลงวันที่"], "dd/MM/yyyy") as Date;
|
||||
development.dateOrder = Extension.checkDateTime(item["คำสั่งลงวันที่/หนังสืออนุมัติลงวันที่"]) as Date;
|
||||
development.trainingDays =
|
||||
item["จำนวนวันที่อบรม"] == null ? null : item["จำนวนวันที่อบรม"].toString();
|
||||
development.posLevelId = x.posLevelId;
|
||||
|
|
@ -3096,15 +3096,15 @@ export class DevelopmentController extends Controller {
|
|||
development.lastName = item["นามสกุล"] == null ? null : item["นามสกุล"].toString();
|
||||
development.position = item["ตำแหน่ง"] == null ? null : item["ตำแหน่ง"].toString();
|
||||
development.org = item["สังกัด"] == null ? null : item["สังกัด"].toString();
|
||||
development.dateStart = Extension.checkDateTime(item["วันที่เริ่มต้น"], "dd/MM/yyyy") as Date;
|
||||
development.dateEnd = Extension.checkDateTime(item["วันที่สิ้นสุด"], "dd/MM/yyyy") as Date;
|
||||
development.dateStart = Extension.checkDateTime(item["วันที่เริ่มต้น"]) as Date;
|
||||
development.dateEnd = Extension.checkDateTime(item["วันที่สิ้นสุด"]) as Date;
|
||||
development.citizenId = citizenId;
|
||||
development.type = "OTHER";
|
||||
development.order =
|
||||
item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"] == null
|
||||
? null
|
||||
: item["เลขที่คำสั่ง/เลขที่หนังสืออนุมัติ"].toString();
|
||||
development.dateOrder = Extension.checkDateTime(item["คำสั่งลงวันที่/หนังสืออนุมัติลงวันที่"], "dd/MM/yyyy") as Date;
|
||||
development.dateOrder = Extension.checkDateTime(item["คำสั่งลงวันที่/หนังสืออนุมัติลงวันที่"]) as Date;
|
||||
development.trainingDays =
|
||||
item["จำนวนวันที่อบรม"] == null ? null : item["จำนวนวันที่อบรม"] .toString();
|
||||
development.posLevelId = null;
|
||||
|
|
|
|||
|
|
@ -1,38 +1,60 @@
|
|||
class Extension {
|
||||
public static checkDateTime(value: any, format: "dd/MM/yyyy" | "yyyy-MM-dd"): Date | null {
|
||||
if (value == null) return null;
|
||||
public static checkDateTime(
|
||||
value: any,
|
||||
format?: "dd/MM/yyyy" | "yyyy-MM-dd",
|
||||
): Date | null {
|
||||
if (value == null || value === "") return null;
|
||||
|
||||
let dateStr = String(value).trim();
|
||||
if (!dateStr) return null;
|
||||
// ===== Excel serial number =====
|
||||
if (typeof value === "number") {
|
||||
if (value < 1) return null;
|
||||
return new Date(Math.round((value - 25569) * 86400 * 1000));
|
||||
}
|
||||
|
||||
const parts = dateStr.replace(/-/g, "/").split("/");
|
||||
const raw = String(value).trim();
|
||||
if (!raw) return null;
|
||||
|
||||
const parts = raw.replace(/-/g, "/").split("/");
|
||||
if (parts.length !== 3) return null;
|
||||
|
||||
let year = 0, month = 0, day = 0;
|
||||
|
||||
switch (format) {
|
||||
case "dd/MM/yyyy":
|
||||
year = Number(parts[2]);
|
||||
month = Number(parts[1]);
|
||||
day = Number(parts[0]);
|
||||
break;
|
||||
|
||||
case "yyyy-MM-dd":
|
||||
// ===== use format if provided =====
|
||||
if (format === "dd/MM/yyyy") {
|
||||
day = Number(parts[0]);
|
||||
month = Number(parts[1]);
|
||||
year = Number(parts[2]);
|
||||
} else if (format === "yyyy-MM-dd") {
|
||||
year = Number(parts[0]);
|
||||
month = Number(parts[1]);
|
||||
day = Number(parts[2]);
|
||||
}
|
||||
// ===== auto detect =====
|
||||
else {
|
||||
if (parts[0].length === 4) {
|
||||
// yyyy/MM/dd
|
||||
year = Number(parts[0]);
|
||||
month = Number(parts[1]);
|
||||
day = Number(parts[2]);
|
||||
break;
|
||||
} else if (parts[2].length === 4) {
|
||||
// dd/MM/yyyy
|
||||
day = Number(parts[0]);
|
||||
month = Number(parts[1]);
|
||||
year = Number(parts[2]);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
if (isNaN(year) || isNaN(month) || isNaN(day)) return null;
|
||||
if ([year, month, day].some(Number.isNaN)) return null;
|
||||
|
||||
// พ.ศ. → ค.ศ.
|
||||
// ===== Buddhist year =====
|
||||
if (year > 2500) year -= 543;
|
||||
if (year < 1800 || year > 2500) return null;
|
||||
|
||||
// clamp month
|
||||
// ===== normalize =====
|
||||
if (month < 1 || month > 12) month = 1;
|
||||
|
||||
// clamp day
|
||||
const maxDay = new Date(year, month, 0).getDate();
|
||||
if (day < 1) day = 1;
|
||||
else if (day > maxDay) day = maxDay;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue