Birthday
- 顯示生日及年齡,適用於球員資料頁面,例如:
- 球員姓名:陳金鋒
- 出生日期:1977年10月28日(47歲)
語法
1 |
{{BD
|
2 |
<!-- 【順序參數】 -->
|
3 |
| 1
|
= <生日,任何合格的日期格表示法皆可>
|
4 |
| 2
|
= <選填欄位,逝日>
|
5 |
| 3
|
= <選填欄位,內縮,即 wiki 表示法的 ":" 字元,若顯示逝世日期時有需要的話>
|
6 |
|
7 |
<!-- 【具名參數】 -->
|
8 |
| 虛歲
|
= <選填欄位,預設值 0。設為 1 則歲數無條件進位,通常用於逝世年齡>
|
9 |
}}
|
生日、逝日
- 兩參數皆可填入任何合格的日期表示法,以下寫法都合法且同義:
- 1991/06/11
- 1991/6/11
- 1991-06-11
- 1991-6-11
- 11 Jun 1991
- 11 Jun, 1991
- 11th Jun 1991
- 11th Jun, 1991
- 11st Jun 1991
- 11st Jun, 1991
- Jun 11 1991
- Jun 11, 1991
- Jun 11th 1991
- Jun 11th, 1991
- 1991 Jun 11
- 1991 11 Jun
逝日
-
範例
人名 |
範例 |
語法
|
陳金鋒 |
|
*出生日期:{{BD | 1977-10-28}}
|
徐生明 |
|
*出生日期:{{BD | 1958/09/11 | 2013/08/24 | 虛歲=1}}
|
備註
- 主要是我每次查詢球員資料時,腦袋裡經常需要轉換年齡;如果可以的話,不如讓它自動計算。
- 此模板運作模式單純,取用目前年月日,與指定的年月日做比較而已,年齡以足歲為準。
- 運作邏輯如下:
function BD($birthday, $show_age = 1) {
list($y, $m, $d) = explode('/', str_replace(' ', '', $birthday));
$str = "[[$y年]]$m月$d日";
if ($show_age == 1) {
list($Y, $M, $D) = explode('-', date('Y-n-j'));
$age = $Y - $y;
if ($m > $M || ($m == $M && $d > $D)) $age--; // 不足歲
$str .= "($age 歲)";
}
echo $str;
}
- 以上為最初的笨邏輯,2017-09-29 改成底下這樣:
function BD($birthday, $show_age = 1) {
$tm = strtotime($birthday);
$str = date('[[Y年]]m月d日', $tm);
if ($show_age == 1) {
$str .= '(' . floor((date('Ymd') - date('Ymd', $tm)) / 10000) . '歲)';
}
echo $str;
}
開發記錄
- [2016-07-13] 建立模板。
- [2017-09-29] 改用更單純的邏輯計算年齡。
- [2018-03-29] 新增「逝世日期」。