hkopendata
Version:
Access different Opendata API and data in Hong Kong
118 lines (117 loc) • 3.85 kB
JavaScript
const moment = require("moment");
moment.suppressDeprecationWarnings = true;
moment.locale("yue", {
parentLocale: "zh-hk",
months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
weekdays: '禮拜日_禮拜一_禮拜二_禮拜三_禮拜四_禮拜五_禮拜六'.split('_'),
weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
longDateFormat: {
LT: 'Ah點mm分',
LTS: 'Ah點mm分ss秒',
L: 'YYYY-MM-DD',
LL: 'YYYY年M月D號',
LLL: 'LL LT',
LLLL: 'LLdddd LT',
l: 'YYYY-M-D',
ll: 'LL',
lll: 'LLL',
llll: 'LLddd LT'
},
meridiemParse: /午夜|凌晨|早上|上午|朝早|上晝|中午|正午|下午|下晝|晏晝|晚上|夜晚|a\.?m\.?|p\.?m\.?|n\.n\.|m\.n\.?/i,
meridiemHour: function (hour, meridiem) {
if (hour === 12) {
hour = 0;
}
meridiem = meridiem.replace(".", "");
if (/^(凌晨|早上|上午|朝早|上晝|am)$/i.test(meridiem)) {
return hour;
} else if (meridiem === "中午") {
return hour >= 11 ? hour : hour + 12;
} else if (/^(下午|下晝|晏晝|晚上|夜晚|pm?)$/i.test(meridiem)) {
return hour + 12;
} else if (/^(正午|nn?)$/i.test(meridiem)) {
return 12;
} else if (/^(午夜|mn?)$/i.test(meridiem)) {
return 0;
}
},
meridiem: function (hour, minute, isLower) {
var hm = hour * 100 + minute;
if (hm == 0) {
return '午夜';
} else if (hm < 600) {
return '凌晨';
} else if (hm < 900) {
return '朝早';
} else if (hm < 1130) {
return '上晝';
} else if (hm == 1200) {
return '正午';
} else if (hm < 1230) {
return '中午';
} else if (hm < 1800) {
return '晏晝';
} else {
return '夜晚';
}
},
preparse: function (input) {
var chinese = ["零|〇|0", "一|1", "二|2", "三|3", "四|4", "五|5", "六|6", "七|7", "八|8", "九|9", "十", "十一", "十二"];
var spoken = {
"$1點": /(\d+)時/g,
"$1號": /(\d+)日/g,
"禮拜": /星期/g
}
chinese.reverse().map((v, i) => {
var regex = new RegExp(`(星期|禮拜|週)?(${v})`, "g");
input = input.replace(regex, ($0, $1) => $1 ? $0 : 12 - i);
})
for (var key in spoken) {
input = input.replace(spoken[key], key)
}
return input;
},
calendar: {
sameDay: '[今日]LT',
nextDay: '[聽日]LT',
nextWeek: '[下]ddddLT',
lastDay: '[尋日]LT',
lastWeek: '[上]ddddLT',
sameElse: 'L'
},
dayOfMonthOrdinalParse: /\d{1,2}(號|月|週)/,
ordinal: function (number, period) {
switch (period) {
case 'd':
case 'D':
case 'DDD':
return number + '號';
case 'M':
return number + '月';
case 'w':
case 'W':
return number + '週';
default:
return number;
}
},
relativeTime: {
future: '%s內',
past: '%s前',
s: '幾秒',
ss: '%d秒',
m: '1分鐘',
mm: '%d分鐘',
h: '1個鐘',
hh: '%d個鐘',
d: '1日',
dd: '%d日',
M: '1個月',
MM: '%d個月',
y: '1年',
yy: '%d年'
}
})
module.exports = moment;