Skip to content

Instantly share code, notes, and snippets.

@S2
Created June 18, 2018 06:02
Show Gist options
  • Save S2/03c343e1029aff6f71ce3419f22acdd8 to your computer and use it in GitHub Desktop.
Save S2/03c343e1029aff6f71ce3419f22acdd8 to your computer and use it in GitHub Desktop.
let strftime = require("strftime")
function getDateList(day){
let n = 3
let deliveryCandidateDays = []
while(deliveryCandidateDays.length < 8) {
let allDays = []
let m = 1
while(m <= n - 2){
allDays.push(new Date(day.getFullYear(), day.getMonth(), day.getDate() + m))
m += 1
// console.log("allDays", allDays)
}
let businessDays = allDays.filter(function(element){
let JapaneseHolidays = require('japanese-holidays')
let holiday = JapaneseHolidays.isHoliday(element)
let numberOfTheDayOfTheWeek = strftime("%w", element)
return (!(holiday || numberOfTheDayOfTheWeek == 0 || numberOfTheDayOfTheWeek == 6))
})
// console.log("businessDays", businessDays)
// console.log("deliveryCandidateDays", deliveryCandidateDays)
if(businessDays.length > 0){
let avalabilitishDay = new Date(day.getFullYear(), day.getMonth(), day.getDate() + n)
// console.log("avalabilitishDay", avalabilitishDay)
deliveryCandidateDays.push({
dateJp : strftime("%m月%d日" , avalabilitishDay) ,
dateEn : strftime("%Y-%m-%d" , avalabilitishDay) ,
})
}
n += 1
}
return deliveryCandidateDays
}
let s = 0;
function assert_equal(arg1 , arg2){
s++;
if(arg1.length != arg2.length){
throw("not equals")
}
for(let i = 0 ; i < arg1.length ; i++){
if(arg1[i]["dateJp"] != arg2[i]["dateJp"]){
console.log(arg1[i]["dateJp"])
console.log(arg2[i]["dateJp"])
throw("not equals " + i + ":" + s)
}
if(arg1[i]["dateEn"] != arg2[i]["dateEn"]){
throw("not equals " + i + ":" + s)
}
}
}
assert_equal(getDateList(new Date("2018-09-21")) ,
[ { dateJp: '09月27日', dateEn: '2018-09-27' },
{ dateJp: '09月28日', dateEn: '2018-09-28' },
{ dateJp: '09月29日', dateEn: '2018-09-29' },
{ dateJp: '09月30日', dateEn: '2018-09-30' },
{ dateJp: '10月01日', dateEn: '2018-10-01' },
{ dateJp: '10月02日', dateEn: '2018-10-02' },
{ dateJp: '10月03日', dateEn: '2018-10-03' },
{ dateJp: '10月04日', dateEn: '2018-10-04' } ])
assert_equal(getDateList(new Date("2018-09-22")) ,
[ { dateJp: '09月27日', dateEn: '2018-09-27' },
{ dateJp: '09月28日', dateEn: '2018-09-28' },
{ dateJp: '09月29日', dateEn: '2018-09-29' },
{ dateJp: '09月30日', dateEn: '2018-09-30' },
{ dateJp: '10月01日', dateEn: '2018-10-01' },
{ dateJp: '10月02日', dateEn: '2018-10-02' },
{ dateJp: '10月03日', dateEn: '2018-10-03' },
{ dateJp: '10月04日', dateEn: '2018-10-04' } ])
assert_equal(getDateList(new Date("2018-09-23")) ,
[ { dateJp: '09月27日', dateEn: '2018-09-27' },
{ dateJp: '09月28日', dateEn: '2018-09-28' },
{ dateJp: '09月29日', dateEn: '2018-09-29' },
{ dateJp: '09月30日', dateEn: '2018-09-30' },
{ dateJp: '10月01日', dateEn: '2018-10-01' },
{ dateJp: '10月02日', dateEn: '2018-10-02' },
{ dateJp: '10月03日', dateEn: '2018-10-03' },
{ dateJp: '10月04日', dateEn: '2018-10-04' } ])
assert_equal(getDateList(new Date("2018-09-24")) ,
[ { dateJp: '09月27日', dateEn: '2018-09-27' },
{ dateJp: '09月28日', dateEn: '2018-09-28' },
{ dateJp: '09月29日', dateEn: '2018-09-29' },
{ dateJp: '09月30日', dateEn: '2018-09-30' },
{ dateJp: '10月01日', dateEn: '2018-10-01' },
{ dateJp: '10月02日', dateEn: '2018-10-02' },
{ dateJp: '10月03日', dateEn: '2018-10-03' },
{ dateJp: '10月04日', dateEn: '2018-10-04' } ])
assert_equal(getDateList(new Date("2018-09-25")) ,
[ { dateJp: '09月28日', dateEn: '2018-09-28' },
{ dateJp: '09月29日', dateEn: '2018-09-29' },
{ dateJp: '09月30日', dateEn: '2018-09-30' },
{ dateJp: '10月01日', dateEn: '2018-10-01' },
{ dateJp: '10月02日', dateEn: '2018-10-02' },
{ dateJp: '10月03日', dateEn: '2018-10-03' },
{ dateJp: '10月04日', dateEn: '2018-10-04' },
{ dateJp: '10月05日', dateEn: '2018-10-05' } ])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment