2026年6月2日 星期二

V1060302 – 實體定更定檢清冊 –實際屆期點=日期+天數 = DATE_ADD(‘2026/12/30’,’天’,’14’); -parseInt -parseFloat

 目的: V1060302 – 實體定更定檢清冊 - [存檔]
           –實際屆期點=日期+天數 = DATE_ADD(‘2026/12/30’,’’,’14’);

處理說明:  1> function DATE_ADD(par_DT, par_UNIT,par_VAL)
                        目的 : 日期字串相加
                        傳入參數:  par_DT:        原始日期
                                           par_UNIT:    A/B/C: 年/月/日 
                                          par_VAL:      累加數值
                         Ex: 
                               2026 / 06 / 01 + 2年 = 2028 / 06 / 01, DATE_ADD("2026/06/01", "A", 2);
                               2026 / 07 / 01 + 6月 = 2027 / 01 / 01, DATE_ADD("2026/07/01", "B", 6);
                               2026 / 07 / 15 + 20天 = 2026 / 08 / 05, DATE_ADD("2026/07/15", "C", 20);

                   2>


1>V1060302.js

Tmp_TMVAL_ = DATE_ADD(Tmp_L_FLYDT, Tmp_TMUNIT, Tmp_TMFEQ);


/*  myfunc.js
 * function DATE_ADD(par_DT, par_UNIT,par_VAL)
 * 傳入參數:  par_DT:        原始日期
 *                      par_UNIT:    A/B/C: 年/月/日 
 *                      par_VAL:      累加數值
日期字串相加-- > 2026 / 06 / 01 + 2年 = 2028 / 06 / 01, DATE_ADD("2026/06/01", "A", 2);
                                 2026 / 07 / 01 + 6月 = 2027 / 01 / 01, DATE_ADD("2026/07/01", "B", 6);
                                 2026 / 07 / 15 + 20天 = 2026 / 08 / 05, DATE_ADD("2026/07/15", "C", 20);
*/
function DATE_ADD(par_DT, par_UNIT,par_VAL) {
    var Tmp_YYYY, Tmp_MM, Tmp_DD;
    var Tmp_YYYY1, Tmp_MM1, Tmp_DD1;
    var Tmp_ADD_YY1, Tmp_ADD_MM1;
    var Tmp_DT = DatetoStr(par_DT, "Y/m/d");    
    Tmp_YYYY = Number(StrExtract(Tmp_DT, 1, "/"));
    Tmp_MM = Number(StrExtract(Tmp_DT, 2, "/"));
    Tmp_DD = Number(StrExtract(Tmp_DT, 3, "/"));
    Tmp_YYYY1 = Tmp_YYYY; Tmp_MM1 = Tmp_MM; Tmp_DD1 = Tmp_DD;
    switch (par_UNIT) {
        case "A":  //年
        {
            Tmp_YYYY1 = Tmp_YYYY + parseInt(par_VAL);
            break;
        }
        case "B":  //月
            {
                Tmp_MM1 = Tmp_MM + parseInt(par_VAL);
                Tmp_ADD_YY1 = Math.trunc((Tmp_MM1) / 12);  //取商數
                Tmp_YYYY1 = Tmp_YYYY + Tmp_ADD_YY1;
                Tmp_MM1 = Math.trunc((Tmp_MM1) % 12);  //取餘數
                break;
            }
        case "C":  //天
            {
                //日期函式 Tmp_DT.setDate( )  ; 日期不對  
                //Tmp_DD1 = Tmp_DD1 + par_VAL;                
                var Tmp_DT = new Date(par_DT);
                var Tmp_DD = Tmp_DT.getDate();
                //console.log("2 Tmp_DT:", Tmp_DT);
                //Tmp_DD 及 par_VAL 必需先轉成數值,才可以累加 , 不然 par_VAL文字, 變成文字相加
                Tmp_DT.setDate(parseInt(Tmp_DD) + parseInt(par_VAL));   
                //console.log("3 Tmp_DT.setDate():", Tmp_DT);
                Tmp_YYYY1 = Tmp_DT.getFullYear();   // 年份 (例如 2026)
                Tmp_MM1 = Tmp_DT.getMonth() + 1; // 月份 (0~11,要 +1 才是正常月份)
                Tmp_DD1 = Tmp_DT.getDate();        // 日期 (1~31)                
                break;
            }
    }// end of switch (par_UNIT)    
    return Tmp_YYYY1.toString() + "/"+Tmp_MM1.toString() +"/"+ Tmp_DD1.toString();
}  // end of  function DATE_ADD(par_DT, par_UNIT,par_VAL) {

沒有留言:

張貼留言