Guest User

Untitled

a guest
May 25th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.78 KB | None | 0 0
  1. /**
  2. * Get time in months|days|hours|seconds|miliseconds later (or of) months|days|hours|seconds|miliseconds
  3. *
  4. * Examples:
  5. * timeIn('second').later(30).minutes();
  6. * timeIn('second').of(2).days();
  7. *
  8. * @param {string} name
  9. * @return {object} { later, of }
  10. */
  11. exports.timeIn = (name = 'milisecond') => {
  12. const output = (timeInMs) => {
  13. const makers = {
  14. month() {
  15. return timeInMs / 1000 / 60 / 60 / 24 / 30;
  16. },
  17. day() {
  18. return timeInMs / 1000 / 60 / 60 / 24;
  19. },
  20. hour() {
  21. return timeInMs / 1000 / 60 / 60;
  22. },
  23. minute() {
  24. return timeInMs / 1000 / 60;
  25. },
  26. second() {
  27. return timeInMs / 1000;
  28. },
  29. milisecond() {
  30. return timeInMs;
  31. }
  32. }
  33. name = name.replace(/s+$/, '');
  34. try {
  35. return makers[name]();
  36. } catch (error) {
  37. throw new Error(name + " is not a function");
  38. }
  39. }
  40. const timeMaker = (number, from = Date.now()) => {
  41. if(typeof number != 'number') {
  42. throw new Error("number must be in number type");
  43. }
  44. const makers = {
  45. month() {
  46. return from + (number * 1000 * 60 * 60 * 24 * 30)
  47. },
  48. day() {
  49. return from + (number * 1000 * 60 * 60 * 24)
  50. },
  51. hour() {
  52. return from + (number * 1000 * 60 * 60)
  53. },
  54. minute() {
  55. return from + (number * 1000 * 60)
  56. },
  57. second() {
  58. return from + (number * 1000)
  59. },
  60. milisecond() {
  61. return from + number
  62. },
  63. }
  64. const makerCall = (name) => {
  65. name = name.replace(/s+$/, '');
  66. try {
  67. const timeInMs = makers[name]();
  68. return output(timeInMs);
  69. } catch (error) {
  70. throw new Error(name + " is not a function");
  71. }
  72. }
  73. return {
  74. month: () => makerCall('month'),
  75. months: () => makerCall('month'),
  76. day: () => makerCall('day'),
  77. days: () => makerCall('day'),
  78. hour: () => makerCall('hour'),
  79. hours: () => makerCall('hour'),
  80. minute: () => makerCall('minute'),
  81. minutes: () => makerCall('minute'),
  82. second: () => makerCall('second'),
  83. seconds: () => makerCall('second'),
  84. milisecond: () => makerCall('milisecond'),
  85. miliseconds: () => makerCall('milisecond'),
  86. }
  87. }
  88. const later = number => timeMaker(number);
  89. const of = number => timeMaker(number, 0);
  90.  
  91. return { later, of }
  92. }
Add Comment
Please, Sign In to add comment