import dayjs from 'dayjs'; var days_ZH = ['星期日','星期一','星期二','星期三','星期四','星期五','星期六']; var days_CN = ['星期日','星期一','星期二','星期三','星期四','星期五','星期六']; export const datetimeStr = (date) =>{ return dateFormat(date,"DD/MM/YYYY HH:mm:ss") }; export const dateStr = (date) =>{ return dateFormat(date,"DD/MM/YYYY") }; export const dateValue = (date) =>{ return dateFormat(date,"YYYY-MM-DD") }; export const dateStr_Year = (date) =>{ return dateFormat(date,'YYYY') }; export const datetimeStr_Cht = (date) =>{ return dateFormat(date,"YYYY年MM月DD日 HH:mm:ss") }; export const dateStr_Cht = (date) =>{ return dateFormat(date,"YYYY年MM月DD日") }; export const dateStr_Eng = (date) =>{ return dateFormat(date,"DD MMM YYYY") }; export const datetimeFieldFormat = (date) =>{ return dateFormat(date,"YYYY-MM-DDTHH:mm"); }; export const timeFormat = (date, locale) => { if (!date) return ""; let d; // 支援 LocalDateTime array if (Array.isArray(date)) { const [y, m, d1, h = 0, min = 0, s = 0] = date; d = dayjs(new Date(y, m - 1, d1, h, min, s)); } else { d = dayjs(date); } if (!d.isValid()) return ""; const hour = d.hour(); const minute = d.minute(); if (locale === "en") { return d.format("h:mm a"); // 12:00 pm } const period = hour < 12 ? "上午" : "下午"; const h12 = hour % 12 === 0 ? 12 : hour % 12; if (minute === 0) { return `${period}${h12}時`; } return `${period}${h12}時${minute}分`; }; export const convertToDate = (date)=>{ if(typeof date == 'number'){ return dayjs(date).toDate(); }else if(Array.isArray(date)){ // if(date.length==3){ // return new Date(date[0],date[1]-1,date[2],0,0,0); // }else if(date.length==4){ // return new Date(date[0],date[1]-1,date[2],0,0,0); // } return new Date(date[0] ,date[1]-1 ,date[2] ,date.length>=4?date[3]:0 ,date.length>=5?date[4]:0 ,date.length>=6?date[5]:0); }else if(typeof date == "string"){ return new Date(date); } return date; } export const toDate = (date) => { if (date === null || date === undefined || date === '') return new Date(NaN); if (typeof date === 'number') { // support seconds or millis const ms = date < 1e12 ? date * 1000 : date; return new Date(ms); } if (Array.isArray(date)) { const [y, m, d, hh = 0, mm = 0, ss = 0] = date; return new Date(y, m - 1, d, hh, mm, ss); } if (typeof date === 'string') { const normalized = date.includes(' ') && !date.includes('T') ? date.replace(' ', 'T') : date; const d = new Date(normalized); return isNaN(d.getTime()) ? new Date(NaN) : d; } return date instanceof Date ? date : new Date(NaN); }; export const formatDateForLocale = (date, intl, locale) => { const fmt = intl.formatMessage({ id: "paymentMethodDatetimeStrFormat" }); let s = dateFormat(date, fmt) || ""; return locale === "en" ? s.replace("am", "a.m.").replace("pm", "p.m.") : s.replace("am", "上午").replace("pm", "下午").replace("00分", ""); }; export const is18_00 = (date) => { const d = convertToDate(date); if (!d) return false; return d.getHours() === 18 && d.getMinutes() === 0; }; export const dateFormat = (date, format) =>{ date = convertToDate(date); if(date) return dayjs(date).format(format); return ""; }; export const dateFormatWithFix = (date, format, hours, minutes) =>{ date = convertToDate(date); date.setHours(hours); date.setMinutes(minutes); if(date) return dayjs(date).format(format); return ""; }; export const getWeekdayStr_ZH = (date) =>{ date = convertToDate(date); if(date) return days_ZH[date.getDay()] return ""; }; export const getWeekdayStr_CN = (date) =>{ date = convertToDate(date); if(date) return days_CN[date.getDay()] return ""; };