一月是個動態日期產生器,基於指定的年份與月份來給予日期,適合用在生日、日期選擇的地方,避免使用者輸入一個不存在的日期。有趣的是,這個套件也將閏年納入了考量。
一月是開發給 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 : [ ... ]
}