Não pode escolher mais do que 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 

83 linhas
3.0 KiB

  1. const { padNumber, parseDate, formatDate } = require('../core/util');
  2. module.exports = {
  3. formatDate: function(date, format, utc) {
  4. date = parseDate(date);
  5. if (date == null) return date;
  6. return formatDate(date, format, utc);
  7. },
  8. dateAdd: function(date, interval, num) {
  9. date = parseDate(date);
  10. if (date == null) return date;
  11. switch (interval) {
  12. case 'years': date.setFullYear(date.getFullYear() + num); break;
  13. case 'months': date.setMonth(date.getMonth() + num); break;
  14. case 'weeks': date.setDate(date.getDate() + (num * 7)); break;
  15. case 'days': date.setDate(date.getDate() + num); break;
  16. case 'hours': date.setHours(date.getHours() + num); break;
  17. case 'minutes': date.setMinutes(date.getMinutes() + num); break;
  18. case 'seconds': date.setSeconds(date.getSeconds() + num); break;
  19. }
  20. return date.toISOString();
  21. },
  22. dateDiff: function(date, interval, date2) {
  23. date = parseDate(date);
  24. date2 = parseDate(date2);
  25. let diff = Math.abs(date2 - date);
  26. if (isNaN(diff) || date == null || date2 == null) return undefined;
  27. let s = 1000, m = s * 60, h = m * 60, d = h * 24, w = d * 7;
  28. switch (interval) {
  29. case 'years': return Math.abs(date2.getFullYear() - date.getFullYear());
  30. case 'months': return Math.abs((date2.getFullYear() * 12 + date2.getMonth()) - (date.getFullYear() * 12 + date.getMonth()));
  31. case 'weeks': return Math.floor(diff / w);
  32. case 'days': return Math.floor(diff / d);
  33. case 'hours': return Math.floor(diff/ h);
  34. case 'minutes': return Math.floor(diff / m);
  35. case 'seconds': return Math.floor(diff / s);
  36. case 'hours:minutes':
  37. h = Math.floor(diff / h);
  38. m = Math.floor(diff / m);
  39. return padNumber(h, 2) + ':' + padNumber(m - (h * 60), 2);
  40. case 'minutes:seconds':
  41. m = Math.floor(diff / m);
  42. s = Math.floor(diff / s);
  43. return padNumber(m, 2) + ':' + padNumber(s - (m * 60), 2);
  44. case 'hours:minutes:seconds':
  45. h = Math.floor(diff / h);
  46. m = Math.floor(diff / m);
  47. s = Math.floor(diff / s);
  48. return padNumber(h, 2) + ':' + padNumber(m - (h * 60), 2) + ':' + padNumber(s - m * 60, 2);
  49. }
  50. return undefined;
  51. },
  52. toTimestamp: function(date) {
  53. date = parseDate(date);
  54. if (date == null) return date;
  55. return Math.floor(date.getTime() / 1000);
  56. },
  57. toLocalTime: function(date) {
  58. date = parseDate(date);
  59. if (date == null) return date;
  60. return formatDate(date, 'yyyy-MM-dd HH:mm:ss.v');
  61. },
  62. toUTCTime: function(date) {
  63. date = parseDate(date);
  64. if (date == null) return date;
  65. return date.toISOString();
  66. },
  67. };