一月是個動態日期產生器,基於指定的年份與月份來給予日期,適合用在生日、日期選擇的地方,避免使用者輸入一個不存在的日期。有趣的是,這個套件也將閏年納入了考量。
一月是開發給 Webpack 或是 Node.js 所使用,倘若要用在瀏覽器上的話,瀏覽器則需要支援 ES6 的 import
和 export
。
import { generate } from 'january'
讓一月生成日期非常地簡單,在沒有指定年份與月份的情況下只需要透過 generate()
即可,且會回傳下列陣列:
{
days : [1, 2, 3, 4, 5, 6, // ...
months: [1, 2, 3, 4, 5, 6, // ...
years : [2016, 2015, 2014, 2013, 2012, // ...
}
當使用者選擇了特定年份、月份時,一月可以幫助你給予該年份與該月份相對應的日期,例如三月有 31 天、四月有 30 天,避免使用者選擇三月但是卻僅有 30 天的問題,和開頭段落呼應的是,這個套件順便幫你處理的閏年的問題,意思是在閏年時的二月會是 29 天,非閏年的二月是 28 天。
要這麼做很簡單,這次使用 generate(年份, 月份)
即可,例如 generate(2000, 2)
,這個時候回傳的 months
與 years
將無變化,但是因為閏年還有月份的關係,days
剩下 29
天了。
一月提供了生成日期時的額外設定,這個設定需傳入在函式 generate(年份, 月份, 設定)
的第三個參數。倘若沒有指定年份和月份,你可以直接將前兩個參數設置為 false
。
有些時候你希望年份是往未來計算,而不是往以前的,你可以在第三個參數設置為 {toFuture: true}
即可,像是下面這樣:
generate(false, false, {toFuture: true})
然後會回傳這樣向未來計數的日期陣列:
{
days : [ ... ]
months: [ ... ]
years : [2016, 2017, 2018, 2019, 2020, // ...
}
年份的預設範圍是 100
年,意思是從 2016
往回算時最遠會算到 1916
,往未來算的話,最遠則是 2116
年,預測到有使用者可能會想要調整這方面的數字,你可以透過 {range: 數值}
變更。
有些時候你可能希望年份不要從今年開始算,為此你可以更改 {offset: 數值}
,假設今年是 2016
且往未來算,那麼 {offset: 1}
將會從 2017
開始算起,倘若是往以前算,則是 2015
。
offset
可以是負數值,舉例來說,如果今年是 2016
且偏移被設置為 {offset: -1}
那麼往未來算則是從 2015
開始,如果是往以前算,則是從 2017
開始。
預設天數還有月份是沒有起首零位的,這意味著小於 10
的數字會是 1
、2
⋯⋯等,而非 01
、02
,倘若你希望有起首零位,你可以透過 {leadingZero: true}
來配置,注意的是這將會讓小於 10
的數字變成字串,因為數字本身不可以有起首零位(必須是字串才行)。
{
days : ["01", "02", "03", "04", "05", // ...
months: ["01", "02", "03", "04", "05", // ...
years : [ ... ]
}