1. /**
    2. * 返回指定长度的天数集合
    3. *
    4. * @param {time} 时间
    5. * @param {len} 长度
    6. * @param {direction} 方向: 1: 前几天; 2: 后几天; 3:前后几天 默认 3
    7. * @return {Array} 数组
    8. *
    9. * @example date.getDays('2018-1-29', 6) // -> ["2018-1-26", "2018-1-27", "2018-1-28", "2018-1-29", "2018-1-30", "2018-1-31", "2018-2-1"]
    10. */
    11. getDays(time, len, diretion) {
    12. var tt = new Date(time);
    13. var getDay = function(day) {
    14. var t = new Date(time);
    15. t.setDate(t.getDate() + day);
    16. var m = t.getMonth()+1;
    17. return t.getFullYear()+'-'+m+'-'+t.getDate();
    18. }
    19. var arr = [];
    20. if (diretion === 1) {
    21. for (var i = 1; i <= len; i++) {
    22. arr.unshift(getDay(-i));
    23. }
    24. }else if(diretion === 2) {
    25. for (var i = 1; i <= len; i++) {
    26. arr.push(getDay(i));
    27. }
    28. }else {
    29. for (var i = 1; i <= len; i++) {
    30. arr.unshift(getDay(-i));
    31. }
    32. arr.push(tt.getFullYear()+'-'+(tt.getMonth()+1)+'-'+tt.getDate());
    33. for (var i = 1; i <= len; i++) {
    34. arr.push(getDay(i));
    35. }
    36. }
    37. return diretion === 1 ? arr.concat([tt.getFullYear()+'-'+(tt.getMonth()+1)+'-'+tt.getDate()]) :
    38. diretion === 2 ? [tt.getFullYear()+'-'+(tt.getMonth()+1)+'-'+tt.getDate()].concat(arr) : arr
    39. }
    40. /*获取某月有多少天*/
    41. getMonthOfDay (time) {
    42. var date = new Date(time)
    43. var year = date.getFullYear()
    44. var mouth = date.getMonth() + 1
    45. var days
    46. //当月份为二月时,根据闰年还是非闰年判断天数
    47. if (mouth == 2) {
    48. days = year % 4 == 0 ? 29 : 28
    49. } else if (mouth == 1 || mouth == 3 || mouth == 5 || mouth == 7 || mouth == 8 || mouth == 10 || mouth == 12) {
    50. //月份为:1,3,5,7,8,10,12 时,为大月.则天数为31;
    51. days = 31
    52. } else {
    53. //其他月份,天数为:30.
    54. days = 30
    55. }
    56. return days
    57. }
    58. /*获取某年有多少天*/
    59. getYearOfDay (time) {
    60. var firstDayYear = this.getFirstDayOfYear(time);
    61. var lastDayYear = this.getLastDayOfYear(time);
    62. var numSecond = (new Date(lastDayYear).getTime() - new Date(firstDayYear).getTime())/1000;
    63. return Math.ceil(numSecond/(24*3600));
    64. }
    65. /*获取某年的第一天*/
    66. getFirstDayOfYear (time) {
    67. var year = new Date(time).getFullYear();
    68. return year + "-01-01 00:00:00";
    69. }
    70. /*获取某年最后一天*/
    71. getLastDayOfYear (time) {
    72. var year = new Date(time).getFullYear();
    73. var dateString = year + "-12-01 00:00:00";
    74. var endDay = this.getMonthOfDay(dateString);
    75. return year + "-12-" + endDay + " 23:59:59";
    76. }
    77. /*获取某个日期是当年中的第几天*/
    78. getDayOfYear (time) {
    79. var firstDayYear = this.getFirstDayOfYear(time);
    80. var numSecond = (new Date(time).getTime() - new Date(firstDayYear).getTime())/1000;
    81. return Math.ceil(numSecond/(24*3600));
    82. }
    83. /*获取某个日期在这一年的第几周*/
    84. getDayOfYearWeek (time) {
    85. var numdays = this.getDayOfYear(time);
    86. return Math.ceil(numdays / 7);
    87. }