1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>时间格式化</title>
    6. </head>
    7. <body>
    8. <script>
    9. // =>不足十位补充零
    10. let addZero = val => {
    11. val = Number(val);
    12. return val < 10 ? '0' + val : val;
    13. };
    14. /*
    15. * 字符串处理解决办法
    16. */
    17. /* function formatTime(time) {
    18. // 1. 先获取年月日等信息
    19. let ary = time.split(' '),
    20. aryLeft = ary[0].split('-'),
    21. aryRight = ary[1].split(':');
    22. ary = aryLeft.concat(aryRight);
    23. // 2. 拼接成为我们想用的格式
    24. let result = ary[0] + "年" + addZero(ary[1]) + "月" + addZero(ary[2]) + "日";
    25. result += " " + addZero(ary[3]) + ":" + addZero(ary[4]) + ":" + addZero(ary[5]);
    26. return result;
    27. } */
    28. /*
    29. * 基于日期对象处理
    30. */
    31. /* function formatTime(time) {
    32. // 1.把时间字符串变为标准日期对象
    33. time = time.replace(/-/g, '/');
    34. time = new Date(time);
    35. // 2.基于方法获取年月日等信息
    36. let year = time.getFullYear(),
    37. month = addZero(time.getMonth() + 1),
    38. day = addZero(time.getDate()),
    39. hours = addZero(time.getHours()),
    40. minutes = addZero(time.getMinutes()),
    41. seconds = addZero(time.getSeconds());
    42. // 3.返回想要的结果
    43. return year + "年" + month + "月" + day + "日 " + hours + ":" + minutes + ":" +
    44. seconds;
    45. } */
    46. /*
    47. * 封装一套公共的时间字符串格式化处理的方式
    48. */
    49. String.prototype.formatTime = function formatTime(template) {
    50. // 初始化模板
    51. typeof template === 'undefined' ? template = "{0}年{1}月{2}日 {3}:{4}:{5}" : null;
    52. // this:我们要处理的字符串
    53. // 获取日期字符串中的数字信息
    54. let matchAry = this.match(/\d+/g);
    55. // 模板和数据的渲染(引擎机制)
    56. template = template.replace(/\{(\d+)\}/g, (x, y) => {
    57. let val = matchAry[y] || '00';
    58. val.length < 2 ? val = '0' + val : null;
    59. return val;
    60. });
    61. return template;
    62. };
    63. let time = '2019-5-30 12:0:0';
    64. console.log(time.formatTime("{1}-{2} {3}:{4}"));
    65. // "2019年05月30日 12:00:00"
    66. </script>
    67. </body>
    68. </html>