getDateDiff.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. var helperGetDateTime = require('./helperGetDateTime')
  2. var helperNewDate = require('./helperNewDate')
  3. var toStringDate = require('./toStringDate')
  4. var isValidDate = require('./isValidDate')
  5. var dateDiffRules = [
  6. ['yyyy', 31536000000],
  7. ['MM', 2592000000],
  8. ['dd', 86400000],
  9. ['HH', 3600000],
  10. ['mm', 60000],
  11. ['ss', 1000],
  12. ['S', 0]
  13. ]
  14. /**
  15. * 返回两个日期之间差距,如果结束日期小于开始日期done为fasle
  16. *
  17. * @param {Date} startDate 开始日期
  18. * @param {Date} endDate 结束日期或当期日期
  19. * @return {Object}
  20. */
  21. function getDateDiff (startDate, endDate) {
  22. var startTime, endTime, item, diffTime, len, index
  23. var result = { done: false, status: false, time: 0 }
  24. startDate = toStringDate(startDate)
  25. endDate = endDate ? toStringDate(endDate) : helperNewDate()
  26. if (isValidDate(startDate) && isValidDate(endDate)) {
  27. startTime = helperGetDateTime(startDate)
  28. endTime = helperGetDateTime(endDate)
  29. if (startTime < endTime) {
  30. diffTime = result.time = endTime - startTime
  31. result.done = true
  32. result.status = true
  33. for (index = 0, len = dateDiffRules.length; index < len; index++) {
  34. item = dateDiffRules[index]
  35. if (diffTime >= item[1]) {
  36. if (index === len - 1) {
  37. result[item[0]] = diffTime || 0
  38. } else {
  39. result[item[0]] = Math.floor(diffTime / item[1])
  40. diffTime -= result[item[0]] * item[1]
  41. }
  42. } else {
  43. result[item[0]] = 0
  44. }
  45. }
  46. }
  47. }
  48. return result
  49. }
  50. module.exports = getDateDiff