1、日期格式化

  1. function dateFormat(fmt, date) {
  2. date = typeof date == 'number' ? new Date(date) : (date || new Date());
  3. fmt = fmt || 'yyyy-MM-dd HH:mm:ss';
  4. let ret = '';
  5. const opt = {
  6. "y+": date.getFullYear().toString(), // 年
  7. "M+": (date.getMonth() + 1).toString(), // 月
  8. "d+": date.getDate().toString(), // 日
  9. "H+": date.getHours().toString(), // 时
  10. "m+": date.getMinutes().toString(), // 分
  11. "s+": date.getSeconds().toString(), // 秒
  12. "S+": date.getMilliseconds() // 毫秒
  13. };
  14. for (let k in opt) {
  15. ret = new RegExp("(" + k + ")").exec(fmt);
  16. if (ret) {
  17. fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
  18. };
  19. };
  20. return fmt;
  21. }

2、字符串解析

  1. function parseDate(str, fmt) {
  2. fmt = fmt || 'yyyy-MM-dd';
  3. const date = {y: 0, M: 1, d: 0, H: 0, h: 0, m: 0, s: 0, S: 0};
  4. fmt.replace(/([^yMdHmsS]*?)(([yMdHmsS])\3*)([^yMdHmsS]*?)/g, function(m, $1, $2, $3, $4, idx, old) {
  5. str = str.replace(new RegExp($1+'(\\d{'+$2.length+'})'+$4), function(_m, _$1) {
  6. date[$3] = parseInt(_$1);
  7. return '';
  8. });
  9. return '';
  10. });
  11. date.M--; // 月份是从0开始的,所以要减去1
  12. var ret = new Date(date.y, date.M, date.d, date.H, date.m, date.s);
  13. if(date.S !== 0) {
  14. ret.setMilliseconds(date.S); // 如果设置了毫秒
  15. }
  16. return ret;
  17. }