# Date 與 Number 擴充

`Date.prototype` 的日期欄位 getter、`$format` 格式化與相對時間，以及 `Number.prototype` 的時間戳與隨機鍵工具。

## Date

原始碼：`src/prototype/Date.ts`

| 方法／屬性 | 說明 |
| --- | --- |
| `date.$y` / `$yy` / `$yyyy` | 年（原始、兩位數、四位數）|
| `date.$M` / `$MM` | 月，從 1 起算（原始、補零）|
| `date.$D` / `$DD` | 日（原始、補零）|
| `date.$d` / `$dd` / `$ddd` / `$dddd` | 星期：索引，接著依長度遞增的本地化名稱（英文縮寫或 `zh` locale 的「星期X」，依 `navigator.language` 偵測）|
| `date.$H` / `$HH` | 24 小時制時（原始、補零）|
| `date.$h` / `$hh` | 12 小時制時（原始、補零）|
| `date.$a` / `$A` | `am`／`pm`（小寫／大寫）|
| `date.$m` / `$mm` | 分（原始、補零）|
| `date.$s` / `$ss` | 秒（原始、補零）|
| `date.$S` / `$SS` / `$SSS` | 毫秒，取 1／2／3 位數 |
| `date.$timestamp` | Unix 秒級時間戳 |
| `date.$gone` | 人性化相對時間（`"3 days"`／`"3天"`、`"Coming in..."`／`"還有..."`，未滿 1 分鐘為 `"recent"`／`"剛剛"`），依 `navigator.language` 本地化 |
| `date.$format(format = "yyyy/MM/DD (ddd) HH:mm:ss")` | Token 式格式化；支援上表列出重複次數的 `Y`／`M`／`D`／`H`／`h`／`m`／`s`／`S`／`A`／`a`／`d` token |
| `date.$date(body?)` | 依 `{ start }`／`{ end }`／`{ pre: { start } }`／`{ pre: { end } }` 回傳當月或上個月的第一天／最後一天；否則回傳 `new Date()` |

## Number

原始碼：`src/prototype/Number.ts`

| 方法／屬性 | 說明 |
| --- | --- |
| `n.$uniKey` | 長度為 `n` 的隨機字串，取自 52 字元字母表，在該行程生命週期內去重 |
| `n.$ASCII` | `String.fromCharCode(n)` |
| `n.$date` | 將 `n` 視為 Unix 秒級時間戳，回傳對應的 `Date` |
| `n.$y` / `$M` / `$D` / `$d` / `$H` / `$h` / `$a` / `$A` / `$m` / `$s` / `$S`（及其補零／重複變體）／ `$gone` | 轉發至 `n.$date` 對應的 `Date` getter |
| `n.$format(format)` | 轉發至 `n.$date.$format(format)` |
