Files
RSSHub/lib/utils/date.js
Tony 6d901cb7dc style(eslint): add eslint-unicorn (#14257)
* 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
2024-01-18 20:43:40 +08:00

86 lines
4.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 格式化 类型这个的时间 几分钟前 | 几小时前 | 几天前 | 几月前 | 几年前 | 具体的格式不对的时间
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;
};