่ชญ่€…ใงใ™ ่ชญ่€…ใ‚’ใ‚„ใ‚ใ‚‹ ่ชญ่€…ใซใชใ‚‹ ่ชญ่€…ใซใชใ‚‹

date ใ‚ณใƒžใƒณใƒ‰ใงใ€Œโ—‹ใƒถๆœˆๅ‰ใ€

1 month ago ใจใ‹ไฝฟใˆใชใ„ date ใ‚ณใƒžใƒณใƒ‰ใงใ€Œโ—‹ใƒถๆœˆๅ‰ใ€ใฃใฆใฉใ†ใ‚„ใฃใฆๅ‡บใ™ใฎใ‹ใชโ€ฆใจใ€‚

ไพ‹ใˆใฐ6ใƒถๆœˆๅ‰ใฎๅ ดๅˆใ€‚๏ผˆๅผ•ๆ•ฐใŒใชใ‘ใ‚Œใฐ ${gap} ใซ -6๏ผ‰

่‡ชๅˆ†ใชใ‚Šใซ่€ƒใˆใฆใฟใŸใ‚‚ใฎใ ใจ JavaScript ใฎ .getMonth() ใฎใ‚ˆใ†ใซ1ใ€œ12ๆœˆใ‚’0ใ€œ11ใซๅค‰ๆ›ใ—ใฆใใ‚Œใ‚’ๆˆปใ™ใฃใฆใ„ใ†ๆ„Ÿใ˜ใซใชใฃใŸใ‚“ใ ใ‘ใฉไป–ใซใ„ใ„ๆ–นๆณ•ใ‚ใ‚‹ใฎใ‹ใ—ใ‚‰๏ผŸ

gap=${1:--6}
set -- $(($(date +%Y) * 12 + $(date +%m) - 1))
set -- $(printf '%04d%02d' $(((${1} + ${gap}) / 12)) \
                           $(((${1} + ${gap}) % 12 + 1)))
target_date=${1}

่ฟฝ่จ˜

date ใ‚ณใƒžใƒณใƒ‰ใซไบˆใ‚ๆผ”็ฎ—ๅญใจ็ฎ—่ก“ๅผ็”จใฎ $(()) ใ‚’ๅ…ฅใ‚ŒใฆใŠใ„ใฆ eval ใงๅฑ•้–‹ใ™ใ‚Œใฐ date ใ‚ณใƒžใƒณใƒ‰ใฏ1ๅ›žใงๆธˆใ‚€ใ€‚

typeset -i gap
gap=${1:--6}
set -- $(
  eval printf %04d%02d $(
    date +'$(((%Y*12+%m-1+${gap})/ 12)) 
           $(((%Y*12+%m-1+${gap})%%12+1))'
    )
  )
target_date=${1}