Skip to content

TeaMeow/January

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 

Repository files navigation

January

一月是個動態日期產生器,基於指定的年份與月份來給予日期,適合用在生日、日期選擇的地方,避免使用者輸入一個不存在的日期。有趣的是,這個套件也將閏年納入了考量。

引用檔案

一月是開發給 Webpack 或是 Node.js 所使用,倘若要用在瀏覽器上的話,瀏覽器則需要支援 ES6 的 importexport

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),這個時候回傳的 monthsyears 將無變化,但是因為閏年還有月份的關係,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 的數字會是 12⋯⋯等,而非 0102,倘若你希望有起首零位,你可以透過 {leadingZero: true} 來配置,注意的是這將會讓小於 10 的數字變成字串,因為數字本身不可以有起首零位(必須是字串才行)。

{
    days  : ["01", "02", "03", "04", "05", // ...
    months: ["01", "02", "03", "04", "05", // ...
    years : [ ... ]
}

About

A date generator based on the relate year, month written in JavaScript.

Resources

License

Stars

Watchers

Forks