Guest User

Untitled

a guest
Jun 19th, 2018
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.16 KB | None | 0 0
  1. let strftime = require("strftime")
  2. function getDateList(day){
  3. let n = 3
  4. let deliveryCandidateDays = []
  5.  
  6. while(deliveryCandidateDays.length < 8) {
  7. let allDays = []
  8. let m = 1
  9.  
  10. while(m <= n - 2){
  11. allDays.push(new Date(day.getFullYear(), day.getMonth(), day.getDate() + m))
  12. m += 1
  13. // console.log("allDays", allDays)
  14. }
  15.  
  16. let businessDays = allDays.filter(function(element){
  17. let JapaneseHolidays = require('japanese-holidays')
  18. let holiday = JapaneseHolidays.isHoliday(element)
  19. let numberOfTheDayOfTheWeek = strftime("%w", element)
  20.  
  21. return (!(holiday || numberOfTheDayOfTheWeek == 0 || numberOfTheDayOfTheWeek == 6))
  22. })
  23.  
  24. // console.log("businessDays", businessDays)
  25. // console.log("deliveryCandidateDays", deliveryCandidateDays)
  26. if(businessDays.length > 0){
  27. let avalabilitishDay = new Date(day.getFullYear(), day.getMonth(), day.getDate() + n)
  28. // console.log("avalabilitishDay", avalabilitishDay)
  29. deliveryCandidateDays.push({
  30. dateJp : strftime("%m月%d日" , avalabilitishDay) ,
  31. dateEn : strftime("%Y-%m-%d" , avalabilitishDay) ,
  32. })
  33. }
  34. n += 1
  35. }
  36. return deliveryCandidateDays
  37. }
  38.  
  39. let s = 0;
  40. function assert_equal(arg1 , arg2){
  41. s++;
  42. if(arg1.length != arg2.length){
  43. throw("not equals")
  44. }
  45.  
  46. for(let i = 0 ; i < arg1.length ; i++){
  47. if(arg1[i]["dateJp"] != arg2[i]["dateJp"]){
  48. console.log(arg1[i]["dateJp"])
  49. console.log(arg2[i]["dateJp"])
  50. throw("not equals " + i + ":" + s)
  51. }
  52. if(arg1[i]["dateEn"] != arg2[i]["dateEn"]){
  53. throw("not equals " + i + ":" + s)
  54. }
  55. }
  56. }
  57.  
  58. assert_equal(getDateList(new Date("2018-09-21")) ,
  59. [ { dateJp: '09月27日', dateEn: '2018-09-27' },
  60. { dateJp: '09月28日', dateEn: '2018-09-28' },
  61. { dateJp: '09月29日', dateEn: '2018-09-29' },
  62. { dateJp: '09月30日', dateEn: '2018-09-30' },
  63. { dateJp: '10月01日', dateEn: '2018-10-01' },
  64. { dateJp: '10月02日', dateEn: '2018-10-02' },
  65. { dateJp: '10月03日', dateEn: '2018-10-03' },
  66. { dateJp: '10月04日', dateEn: '2018-10-04' } ])
  67.  
  68. assert_equal(getDateList(new Date("2018-09-22")) ,
  69. [ { dateJp: '09月27日', dateEn: '2018-09-27' },
  70. { dateJp: '09月28日', dateEn: '2018-09-28' },
  71. { dateJp: '09月29日', dateEn: '2018-09-29' },
  72. { dateJp: '09月30日', dateEn: '2018-09-30' },
  73. { dateJp: '10月01日', dateEn: '2018-10-01' },
  74. { dateJp: '10月02日', dateEn: '2018-10-02' },
  75. { dateJp: '10月03日', dateEn: '2018-10-03' },
  76. { dateJp: '10月04日', dateEn: '2018-10-04' } ])
  77.  
  78. assert_equal(getDateList(new Date("2018-09-23")) ,
  79. [ { dateJp: '09月27日', dateEn: '2018-09-27' },
  80. { dateJp: '09月28日', dateEn: '2018-09-28' },
  81. { dateJp: '09月29日', dateEn: '2018-09-29' },
  82. { dateJp: '09月30日', dateEn: '2018-09-30' },
  83. { dateJp: '10月01日', dateEn: '2018-10-01' },
  84. { dateJp: '10月02日', dateEn: '2018-10-02' },
  85. { dateJp: '10月03日', dateEn: '2018-10-03' },
  86. { dateJp: '10月04日', dateEn: '2018-10-04' } ])
  87.  
  88. assert_equal(getDateList(new Date("2018-09-24")) ,
  89. [ { dateJp: '09月27日', dateEn: '2018-09-27' },
  90. { dateJp: '09月28日', dateEn: '2018-09-28' },
  91. { dateJp: '09月29日', dateEn: '2018-09-29' },
  92. { dateJp: '09月30日', dateEn: '2018-09-30' },
  93. { dateJp: '10月01日', dateEn: '2018-10-01' },
  94. { dateJp: '10月02日', dateEn: '2018-10-02' },
  95. { dateJp: '10月03日', dateEn: '2018-10-03' },
  96. { dateJp: '10月04日', dateEn: '2018-10-04' } ])
  97.  
  98. assert_equal(getDateList(new Date("2018-09-25")) ,
  99. [ { dateJp: '09月28日', dateEn: '2018-09-28' },
  100. { dateJp: '09月29日', dateEn: '2018-09-29' },
  101. { dateJp: '09月30日', dateEn: '2018-09-30' },
  102. { dateJp: '10月01日', dateEn: '2018-10-01' },
  103. { dateJp: '10月02日', dateEn: '2018-10-02' },
  104. { dateJp: '10月03日', dateEn: '2018-10-03' },
  105. { dateJp: '10月04日', dateEn: '2018-10-04' },
  106. { dateJp: '10月05日', dateEn: '2018-10-05' } ])
Add Comment
Please, Sign In to add comment