mirror of
https://github.com/DIYgod/RSSHub.git
synced 2025-12-18 22:33:26 +08:00
* style: add eslint-unicorn * style: fix unicorn/no-useless-spread * style: fix unicorn/no-useless-promise-resolve-reject * style: fix unicorn/no-for-loop * fix: codeql bad HTML filtering regexp * fix: codeql incomplete replace * fix: unicorn/no-abusive-eslint-disable * style: fix unicorn/no-new-array * style: fix unicorn/no-typeof-undefined * style: fix unicorn/no-zero-fractions * style: fix unicorn/no-empty-file * style: fix unicorn/prefer-date-now * revert: auto fix unicorn/prefer-switch on lib/v2/kuaidi100/utils.js * style: fix unicorn/prefer-array-find * style: fix unicorn/prefer-array-flat * style: fix unicorn/prefer-array-flat-map * style: fix unicorn/prefer-at * style: fix unicorn/prefer-string-starts-ends-with * style: fix unicorn/prefer-includes * fix: codeql URL substring sanitization * style: fix unicorn/prefer-optional-catch-binding * style: fix unicorn/catch-error-name * style: fix unicorn/escape-case * style: fix unicorn/prefer-native-coercion-functions * style: fix unicorn/prefer-regexp-test * style: fix unicorn/require-array-join-separator * style: fix unicorn/prefer-math-trunc * style: fix unicorn/prefer-negative-index * style: fix unicorn/prefer-dom-node-dataset * style: fix unicorn/prefer-dom-node-text-content * style: fix unicorn/prefer-query-selector * style: fix unicorn/no-array-for-each * style: fix unicorn/no-negated-condition * style: fix unicorn/prefer-add-event-listener * style: fix unicorn/import-style * style: fix prefer-regex-literals * style: disable unicorn/no-useless-switch-case * style: disable unicorn/text-encoding-identifier-case * style: fix unicorn/prefer-set-has * style: fix unicorn/prefer-spread * revert: auto fix on lib/routes/universities/ynnu/edu/base64.js * style: fix unicorn/no-useless-undefined * style: fix unicorn/no-array-push-push * style: fix unicorn/no-useless-undefined again * style: fix unicorn/no-lonely-if * style: fix unicorn/prefer-reflect-apply * style: fix unicorn/switch-case-braces * style: fix unicorn/prefer-switch * style: fix unicorn/prefer-array-some * fix: deepscan UNUSED_VAR_ASSIGN * style: fix unicorn/prefer-ternary * fix: follow-up of unicorn/prefer-ternary * revert: auto fix of unicorn/prefer-string-slice for substring() * style: disable unicorn/prefer-string-slice fix: auto fix slice over deprecated substr * style: fix unicorn/throw-new-error * style: fix unicorn/filename-case * test: fix dateParser renaming * style: fix unicorn/better-regex * style: fix unicorn/prefer-string-replace-all * fix(deps): add sanitize-html * style: fix no-prototype-builtins * style: fix unicorn/consistent-destructuring * style: fix unicorn/consistent-function-scoping * style: fix unicorn/prefer-regexp-test * style: fix unicorn/prefer-logical-operator-over-ternary * style: fix unicorn/no-array-callback-reference * style: add prefer-object-has-own * style: warn unicorn/no-empty-file * style: fix unicorn/prefer-number-properties * style: fix no-useless-undefined again * style: fix unicorn/numeric-separators-style * style: disable unicorn/no-array-callback-reference false postive with cheerio
86 lines
4.8 KiB
JavaScript
86 lines
4.8 KiB
JavaScript
// 格式化 类型这个的时间 , 几分钟前 | 几小时前 | 几天前 | 几月前 | 几年前 | 具体的格式不对的时间
|
||
const serverOffset = new Date().getTimezoneOffset() / 60;
|
||
|
||
module.exports = (html, timeZone = -serverOffset) => {
|
||
let math;
|
||
let date = new Date();
|
||
if (/(\d+)分钟前/.test(html)) {
|
||
math = /(\d+)分钟前/.exec(html);
|
||
date.setMinutes(date.getMinutes() - math[1]);
|
||
date.setSeconds(0);
|
||
} else if (/(\d+)小时前/.test(html)) {
|
||
math = /(\d+)小时前/.exec(html);
|
||
date.setHours(date.getHours() - math[1]);
|
||
} else if (/(\d+)天前/.test(html)) {
|
||
math = /(\d+)天前/.exec(html);
|
||
date.setDate(date.getDate() - math[1]);
|
||
} else if (/(\d+)月前/.test(html)) {
|
||
math = /(\d+)月前/.exec(html);
|
||
date.setMonth(date.getMonth() - math[1]);
|
||
} else if (/(\d+)年前/.test(html)) {
|
||
math = /(\d+)年前/.exec(html);
|
||
date.setFullYear(date.getFullYear() - math[1]);
|
||
} else if (/今天\s*(\d+):(\d+)/.test(html)) {
|
||
math = /今天\s*(\d+):(\d+)/.exec(html);
|
||
date = new Date(date.getFullYear(), date.getMonth(), date.getDate(), math[1], math[2]);
|
||
} else if (/昨天\s*(\d+):(\d+)/.test(html)) {
|
||
math = /昨天\s*(\d+):(\d+)/.exec(html);
|
||
date = new Date(date.getFullYear(), date.getMonth(), date.getDate() - 1, math[1], math[2]);
|
||
} else if (/前天\s*(\d+):(\d+)/.test(html)) {
|
||
math = /前天\s*(\d+):(\d+)/.exec(html);
|
||
date = new Date(date.getFullYear(), date.getMonth(), date.getDate() - 2, math[1], math[2]);
|
||
} else if (/(\d+)年(\d+)月(\d+)日(\d+)时/.test(html)) {
|
||
math = /(\d+)年(\d+)月(\d+)日(\d+)时/.exec(html);
|
||
date = new Date(Number.parseInt(math[1]), Number.parseInt(math[2]) - 1, Number.parseInt(math[3]), Number.parseInt(math[4]));
|
||
} else if (/(\d+)年(\d+)月(\d+)日/.test(html)) {
|
||
math = /(\d+)年(\d+)月(\d+)日/.exec(html);
|
||
date = new Date(Number.parseInt(math[1]), Number.parseInt(math[2]) - 1, Number.parseInt(math[3]));
|
||
} else if (/(\d+)-(\d+)-(\d+) (\d+):(\d+)/.test(html)) {
|
||
math = /(\d+)-(\d+)-(\d+) (\d+):(\d+)/.exec(html);
|
||
date = new Date(math[1], Number.parseInt(math[2]) - 1, math[3], math[4], math[5]);
|
||
} else if (/(\d+)-(\d+) (\d+):(\d+)/.test(html)) {
|
||
math = /(\d+)-(\d+) (\d+):(\d+)/.exec(html);
|
||
date = new Date(date.getFullYear(), Number.parseInt(math[1]) - 1, math[2], math[3], math[4]);
|
||
} else if (/(\d+)\/(\d+)\/(\d+)\s*(\d+):(\d+):(\d+)/.test(html)) {
|
||
math = /(\d+)\/(\d+)\/(\d+)\s*(\d+):(\d+):(\d+)/.exec(html);
|
||
date = new Date(math[1], Number.parseInt(math[2]) - 1, math[3], math[4], math[5], math[6]);
|
||
} else if (/(\d+)\/(\d+)\/(\d+)\s*(\d+):(\d+)/.test(html)) {
|
||
math = /(\d+)\/(\d+)\/(\d+)\s*(\d+):(\d+)/.exec(html);
|
||
date = new Date(math[1], Number.parseInt(math[2]) - 1, math[3], math[4], math[5]);
|
||
} else if (/(\d+)\/(\d+)\s*(\d+):(\d+)/.test(html)) {
|
||
math = /(\d+)\/(\d+)\s*(\d+):(\d+)/.exec(html);
|
||
date = new Date(date.getFullYear(), Number.parseInt(math[1]) - 1, math[2], math[3], math[4]);
|
||
} else if (/(\d+)月(\d+)日 (\d+):(\d+)/.test(html)) {
|
||
math = /(\d+)月(\d+)日 (\d+):(\d+)/.exec(html);
|
||
date = new Date(date.getFullYear(), Number.parseInt(math[1]) - 1, math[2], math[3], math[4]);
|
||
} else if (/(\d+)月(\d+)日 (\d+)时(\d+)分/.test(html)) {
|
||
math = /(\d+)月(\d+)日 (\d+)时(\d+)分/.exec(html);
|
||
date = new Date(date.getFullYear(), Number.parseInt(math[1]) - 1, math[2], math[3], math[4]);
|
||
} else if (/(\d+)月(\d+)日/.test(html)) {
|
||
math = /(\d+)月(\d+)日/.exec(html);
|
||
date = new Date(date.getFullYear(), Number.parseInt(math[1]) - 1, math[2]);
|
||
} else if (/(\d+)月(\d+)号/.test(html)) {
|
||
math = /(\d+)月(\d+)号/.exec(html);
|
||
date = new Date(date.getFullYear(), Number.parseInt(math[1]) - 1, math[2]);
|
||
} else if (/(\d+)\/(\d+)/.test(html)) {
|
||
math = /(\d+)\/(\d+)/.exec(html);
|
||
date = new Date(date.getFullYear(), Number.parseInt(math[1]) - 1, math[2]);
|
||
} else if (/(\d+)-(\d+)-(\d+)/.test(html)) {
|
||
math = /(\d+)-(\d+)-(\d+)/.exec(html);
|
||
date = new Date(math[1], Number.parseInt(math[2]) - 1, math[3]);
|
||
} else if (/(\d+)-(\d+)/.test(html)) {
|
||
math = /(\d+)-(\d+)/.exec(html);
|
||
date = new Date(date.getFullYear(), Number.parseInt(math[1]) - 1, math[2]);
|
||
} else if (/(\d+):(\d+)/.test(html)) {
|
||
math = /(\d+):(\d+)/.exec(html);
|
||
date = new Date(date.getFullYear(), date.getMonth(), date.getDate(), math[1], math[2]);
|
||
} else if (/刚刚/.test(html)) {
|
||
math = /刚刚/.exec(html);
|
||
}
|
||
|
||
if (math) {
|
||
return new Date(date.getTime() - 60 * 60 * 1000 * (timeZone + serverOffset)).toUTCString();
|
||
}
|
||
return html;
|
||
};
|