export.js 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. //日期转时间戳
  2. function getUnixTime(dateStr){
  3. var newstr = dateStr.replace(/-/g,'/');
  4. var date = new Date(newstr);
  5. var time_str = date.getTime().toString();
  6. return time_str.substr(0, 10);
  7. }
  8. //时间戳转日期,falg:true表示只要年月日,part: year month date
  9. function toDate(number,flag,part) {
  10. var n = number;
  11. var date = new Date(parseInt(n) * 1000);
  12. var y = date.getFullYear();
  13. var m = date.getMonth() + 1;
  14. m = m < 10 ? ('0' + m) : m;
  15. var d = date.getDate();
  16. d = d < 10 ? ('0' + d) : d;
  17. var h = date.getHours();
  18. h = h < 10 ? ('0' + h) : h;
  19. var minute = date.getMinutes();
  20. var second = date.getSeconds();
  21. minute = minute < 10 ? ('0' + minute) : minute;
  22. second = second < 10 ? ('0' + second) : second;
  23. if(flag){
  24. if(part == "year"){
  25. return y;
  26. }else if(part == "month"){
  27. return m;
  28. }else if(part == "date"){
  29. return n;
  30. }
  31. return y + '-' + m + '-' + d;
  32. }
  33. return y + '-' + m + '-' + d + ' ' + h + ':' + minute+':' + second;
  34. }
  35. //判断两个日期时间戳相差多少天,参数为时间戳
  36. function dateCompare(dateTimeStamp1,dateTimeStamp2){
  37. var dayNum = 0;
  38. if(dateTimeStamp1 > dateTimeStamp2){
  39. dayNum = Math.floor((dateTimeStamp1 - dateTimeStamp2) / 86400);
  40. }else{
  41. dayNum = Math.floor((dateTimeStamp2 - dateTimeStamp1) / 86400);
  42. }
  43. return dayNum;
  44. }
  45. //判断过去某个时间点到当前时间是否达到多少天,可以用来定期清理缓存
  46. function datePassDays(dateTimeStamp,days){
  47. var now = getUnixTime(formatDateThis(new Date()));
  48. var diffValue = now - dateTimeStamp;
  49. var limitTime = days * 86400;
  50. if(diffValue >= limitTime){
  51. return true;
  52. }
  53. return false;
  54. }
  55. //当前日期加减天数,falg:true表示只要年月日
  56. function mathChangeDate(date,method,days,flag){
  57. //method:'+' || '-'
  58. //ios不解析带'-'的日期格式,要转成'/',不然Nan,切记
  59. var dateVal = date.replace(/-/g, '/');
  60. var timestamp = Date.parse(dateVal);
  61. if(method == '+'){
  62. timestamp = timestamp / 1000 + 24 * 60 * 60 * days;
  63. } else if (method == '-'){
  64. timestamp = timestamp / 1000 - 24 * 60 * 60 * days;
  65. }
  66. return toDate(timestamp,flag);
  67. }
  68. //时间戳转换具体时间描述(传入数值型时间戳)
  69. function getDateDiff(dateTimeStamp) {
  70. var result = '';
  71. var minute = 1 * 60;
  72. var hour = minute * 60;
  73. var day = hour * 24;
  74. var halfamonth = day * 15;
  75. var month = day * 30;
  76. var now = getUnixTime(formatDateThis(new Date()));//有些特殊 不能使用 new Date()
  77. var diffValue = now - dateTimeStamp;
  78. if (diffValue < 0) { return; }
  79. var monthC = diffValue / month;
  80. var weekC = diffValue / (7 * day);
  81. var dayC = diffValue / day;
  82. var hourC = diffValue / hour;
  83. var minC = diffValue / minute;
  84. if (monthC >= 1) {
  85. result = "" + parseInt(monthC) + "月前";
  86. }
  87. else if (weekC >= 1) {
  88. result = "" + parseInt(weekC) + "周前";
  89. }
  90. else if (dayC >= 1) {
  91. result = "" + parseInt(dayC) + "天前";
  92. }
  93. else if (hourC >= 1) {
  94. result = "" + parseInt(hourC) + "小时前";
  95. }
  96. else if (minC >= 1) {
  97. result = "" + parseInt(minC) + "分钟前";
  98. } else
  99. result = "刚刚";
  100. return result;
  101. };
  102. //获取当前年份,月份, 例: getCurrentTime("year")
  103. const getCurrentTime = (method,date=new Date()) => {
  104. if(method == "year"){
  105. return date.getFullYear();
  106. }else if(method == "month"){
  107. return date.getMonth() + 1;
  108. }
  109. return date;
  110. }
  111. //获取当前服务器时间,参数直接用 new Date() 就可以了
  112. const formatDateThis = (date,lab='-') => {
  113. const year = date.getFullYear();
  114. const month = date.getMonth() + 1;
  115. const day = date.getDate();
  116. const hour = date.getHours();
  117. const minute = date.getMinutes();
  118. const second = date.getSeconds();
  119. return [year, month, day].map(formatNumber).join(lab) +' '+ [hour, minute, second].map(formatNumber).join(':');
  120. }
  121. const formatTime = (date,lab='-') => {
  122. const year = date.getFullYear();
  123. const month = date.getMonth() + 1;
  124. const day = date.getDate();
  125. return [year, month, day].map(formatNumber).join(lab);
  126. }
  127. const formatTimes = time => {
  128. const hour = time.getHours();
  129. const minute = time.getMinutes();
  130. const second = time.getSeconds();
  131. return [hour, minute,second].map(formatNumber).join(':');
  132. }
  133. //补0
  134. const formatNumber = n => {
  135. n = n.toString();
  136. return n[1] ? n : '0' + n;
  137. }
  138. //比较两个时间大小(格式参考yyyy-mm-dd hh:mm:ss)
  139. function compareTime(startTime,endTime){
  140. //结束时间大于开始时间就是true , 反之则为 false
  141. var sn = getUnixTime(startTime) * 1;
  142. var en = getUnixTime(endTime) * 1;
  143. if(en > sn){
  144. return true;
  145. }
  146. return false;
  147. }
  148. module.exports = {
  149. dateCompare:dateCompare,
  150. getCurrentTime:getCurrentTime,
  151. getUnixTime:getUnixTime,
  152. formatDateThis:formatDateThis,
  153. formatTime: formatTime,
  154. formatTimes: formatTimes,
  155. toDate: toDate,
  156. getDateDiff: getDateDiff,
  157. mathChangeDate: mathChangeDate,
  158. compareTime: compareTime,
  159. datePassDays:datePassDays
  160. }