1. 程式人生 > >工具函式總結

工具函式總結

1、日期格式轉換

function zeller(date) {
    const c = parseInt(date.getFullYear() / 100, 10);
    let y = parseInt(date.getFullYear() % 100, 10);
    let m = parseInt(date.getMonth() + 1, 10);
    const d = parseInt(date.getDate(), 10);
    let w = 0;
    if (m === 1 || m === 2) { // 判斷月份是否為1或2
      y -= 1;
      m 
+= 12; // 某年的1、2月要看作上一年的13、14月來計算 } w += y + parseInt(y / 4, 10); w += parseInt(c / 4, 10) - (2 * c); w += parseInt((13 * (m + 1)) / 5, 10); w += (d - 1); // 蔡勒公式的公式 while (w < 0) w += 7; // 確保餘數為正 w %= 7; return Math.ceil(w); }; function timeFormat(date, fmt = 'yyyy-MM-dd hh:mm:ss w') { let rnFmt
= fmt; const o = { 'M+': `${date.getMonth() + 1}`, // 月份 'd+': `${date.getDate()}`, // 'h+': `${date.getHours()}`, // 小時 'm+': `${date.getMinutes()}`, // 's+': `${date.getSeconds()}`, // 'w+': ['日', '一', '二', '三', '四', '五', '六'][zeller(date)], // 'q+': Math.floor((mt.getMonth() + 3) / 3), // 季度
// 'S': mt.getMilliseconds() // 毫秒 }; if (/(y+)/.test(rnFmt)) { rnFmt = rnFmt.replace(RegExp.$1, `${date.getFullYear()}`.substr(4 - RegExp.$1.length)); } Object.keys(o).forEach(k => { if (new RegExp(`(${k})`).test(rnFmt)) { rnFmt = rnFmt.replace( RegExp.$1, (RegExp.$1.length === 1) ? o[k] : ((`00${o[k]}`).substr(o[k].length)), ); } }); return rnFmt; };
timeFormat(new Date()) // 2018-11-12 11:06:05 一

注意:RegExp.$n是非標準的,儘量不要在生產環境中使用。 
【RegExp.$n】(n為1-9之間的數值)指的是與正則表示式匹配的第n個 子匹配(以括號為標誌)字串。 
【RegExp.$_】與正則表示式匹配的完整字串。