date.js 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. const formatTime = date => {
  2. const year = date.getFullYear()
  3. const month = date.getMonth() + 1
  4. const day = date.getDate()
  5. const hour = date.getHours()
  6. const minute = date.getMinutes()
  7. const second = date.getSeconds()
  8. return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
  9. }
  10. const formatNumber = n => {
  11. n = n.toString()
  12. return n[1] ? n : '0' + n
  13. }
  14. const formatDate = date => {
  15. const year = date.getFullYear()
  16. const month = date.getMonth() + 1
  17. const day = date.getDate()
  18. const hour = date.getHours()
  19. const minute = date.getMinutes()
  20. const second = date.getSeconds()
  21. return [year, month, day].map(formatNumber).join('/')
  22. }
  23. //计算相差天数
  24. const datedifference = (sDate1, sDate2) => { //sDate1和sDate2是2006-12-18格式
  25. var dateSpan,
  26. tempDate,
  27. iDays;
  28. sDate1 = Date.parse(sDate1.replace(/-/g, '/'));
  29. sDate2 = Date.parse(sDate2.replace(/-/g, '/'));
  30. dateSpan = sDate2 - sDate1;
  31. dateSpan = Math.abs(dateSpan);
  32. iDays = Math.floor(dateSpan / (24 * 3600 * 1000));
  33. return iDays
  34. };
  35. const getDays = (date1, date2) => {
  36. const dateTime = 1000 * 60 * 60 * 24; //每一天的毫秒数
  37. const minusDays = Math.floor(((date2.getTime() - date1.getTime()) / dateTime));//计算出两个日期的天数差
  38. return Math.abs(minusDays);
  39. }
  40. /**
  41. * [dateAddDays 从某个日期增加n天后的日期]
  42. * @param {[string]} dateStr [日期字符串]
  43. * @param {[int]} dayCount [增加的天数]
  44. * @return {[string]}[增加n天后的日期字符串]
  45. */
  46. const dateAddDays = (dateStr, dayCount) => {
  47. var tempDate = new Date(dateStr.replace(/-/g, "/"));//把日期字符串转换成日期格式
  48. var resultDate = new Date((tempDate / 1000 + (86400 * dayCount)) * 1000);//增加n天后的日期
  49. var resultDateStr = resultDate.getFullYear() + "-" + (resultDate.getMonth() + 1) + "-" + (resultDate.getDate());//将日期转化为字符串格式
  50. return resultDateStr;
  51. }
  52. /**
  53. * 根据newDate 来获取加的日期
  54. */
  55. const addDaysFromNewDate = (tempDate, dayCount) => {
  56. var resultDate = new Date((tempDate / 1000 + (86400 * dayCount)) * 1000);//增加n天后的日期
  57. // var resultDateStr=resultDate.getFullYear()+"/"+(resultDate.getMonth()+1)+"/"+(resultDate.getDate());//将日期转化为字符串格式
  58. // return resultDateStr;
  59. const year = resultDate.getFullYear();
  60. const month = resultDate.getMonth() + 1;
  61. const day = resultDate.getDate();
  62. return [year, month, day].map(formatNumber).join('/')
  63. }
  64. const getWeightDate = date => {
  65. var timearr = date.replace(" ", ":").replace(/\:/g, "-").split("-");
  66. var timestr = "" + timearr[1] + "/" + timearr[2]
  67. return timestr
  68. }
  69. const dateAddDate = (dateStr, dayCount) => {
  70. var tempDate = new Date(dateStr.replace(/-/g, "/"));//把日期字符串转换成日期格式
  71. var resultDate = new Date((tempDate / 1000 + (86400 * dayCount)) * 1000);//增加n天后的日期
  72. const year = resultDate.getFullYear()
  73. const month = resultDate.getMonth() + 1
  74. const day = resultDate.getDate()
  75. const hour = resultDate.getHours()
  76. const minute = resultDate.getMinutes()
  77. const second = resultDate.getSeconds()
  78. //将日期转化为字符串格式
  79. return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':');
  80. }
  81. const addDayTranMillisecond = (dateStr, dayCount) => {
  82. var tempDate = new Date(dateStr.replace(/-/g, "/"));//把日期字符串转换成日期格式
  83. var resultDate = new Date((tempDate / 1000 + (86400 * dayCount)) * 1000);//增加n天后的日期
  84. //将日期转化为字符串格式
  85. return resultDate.getTime();
  86. }
  87. //计算剩余时间
  88. const remainDayAndHour = (sDate1, currentDate) => { //sDate1和sDate2是2006-12-18格式
  89. var dateSpan,
  90. tempDate,
  91. iDays;
  92. sDate1 = Date.parse(sDate1.replace(/-/g, '/'));
  93. currentDate = Date.parse(currentDate.replace(/-/g, '/'));
  94. dateSpan = currentDate - sDate1;
  95. // console.log(dateSpan);
  96. if (dateSpan < 0) {
  97. dateSpan = Math.abs(dateSpan);
  98. iDays = Math.floor(dateSpan / (24 * 3600 * 1000));
  99. // 计算小时数
  100. var hours = Math.floor(dateSpan / (60 * 60 * 1000));
  101. // console.log(iDays,hours);
  102. return [iDays, hours];
  103. } else {
  104. return [0, 0];
  105. }
  106. };
  107. //根据毫秒计算剩余时间
  108. const remainFromMillisecond = (dateMill) => { //
  109. if (dateMill > 0) {
  110. // 天数
  111. let days = Math.floor(dateMill / (24 * 3600 * 1000));
  112. //计算出小时数
  113. let leave1 = dateMill % (24 * 3600 * 1000) //计算天数后剩余的毫秒数
  114. let hours = Math.floor(leave1 / (3600 * 1000))
  115. //计算相差分钟数
  116. let leave2 = leave1 % (3600 * 1000) //计算小时数后剩余的毫秒数
  117. let minutes = Math.floor(leave2 / (60 * 1000))
  118. //计算相差秒数
  119. let leave3 = leave2 % (60 * 1000) //计算分钟数后剩余的毫秒数
  120. let seconds = Math.round(leave3 / 1000)
  121. return [days, hours, minutes, seconds];
  122. } else {
  123. return [0, 0, 0, 0];
  124. }
  125. };
  126. //判断两个日期是否相等
  127. const datesIsEqual = (sDate1, sDate2) => { //sDate1和sDate2是2006-12-18格式
  128. var dateSpan;
  129. sDate1 = Date.parse(sDate1.replace(/-/g, '/'));
  130. sDate2 = Date.parse(sDate2.replace(/-/g, '/'));
  131. dateSpan = sDate2 - sDate1;
  132. if (0 === dateSpan) {
  133. return true;
  134. } else {
  135. return false
  136. }
  137. };
  138. export default {
  139. formatTime,
  140. formatDate,
  141. datedifference,
  142. getDays,
  143. dateAddDays,
  144. addDaysFromNewDate,
  145. getWeightDate,
  146. dateAddDate,
  147. remainDayAndHour,
  148. addDayTranMillisecond,
  149. remainFromMillisecond,
  150. datesIsEqual
  151. }