如何在 Javascript 中将波斯 (Jalali) 日期转换为其他 18 个日历日期,无需外部库或复杂的天文方程

发布于 2025-01-13 12:07:16 字数 648 浏览 2 评论 0原文

TL;DR, 要求是能够采用波斯 (Jalali) 日期(也称为波斯阳历回历),例如 Esfand 19, 1400(即 “12/19/1400”并将其转换为其他日历(公历、伊斯兰教、中国、希伯来语等)无需使用外部库或复杂的天文方程,并且无需使用新日期 Temporal API 到 Javascript 中的待实现。

Javascript 内置方法 Intl.DateTimeFormat() 将公历日期转换为各种日历日期(18 个世界日历),包括输出字符串的格式,

但是从今天(三月)开始 。 2022),Javascript 不提供反向操作的内置方法,即将波斯日期(和其他日历的日期)转换回公历日期或其他日历,为此,您将需要使用外部日期库。进行诸如“moment.js”等的转换。

我进行日期转换的方法如下,作为 StackOverflow 推荐的此问题的答案:我可以回答我自己的问题吗?

TL;DR, The requirement is to be able to take a Persian (Jalali) date (also known as Persian Solar Hijri Calendar) like Esfand 19, 1400 (i.e. "12/19/1400" and convert it to other calendars (Gregorian, Islamic, Chinese, Hebrew, etc.) without using external libraries or complex Astronomical Equations. And without using the pending implementation of the new date Temporal API into Javascript.

Javascript built-in method Intl.DateTimeFormat() converts Gregorian Dates into various calendars' dates (18 World Calendars) including the formatting of the output string.

However, as of today (March 2022), Javascript does not provide a built-in method for the reverse operation, i.e. converting the Persian Dates (and other calendars' dates) back into Gregorian Dates or into other calendars. For such purposes, you will need to use External Date Libraries to do the conversion such as 'moment.js' and many others.

My method of doing the date conversion follows as an answer to this question as recommended by StackOverflow here: Can I answer my own question?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

半葬歌 2025-01-20 12:07:16

下面的简短 Javascript 函数使用外部库,并提供将波斯 (Jalali) 日期(从波斯年 -272,442 AP 到 +275,139 AP)转换为任何日期的工具以下 18 个 Javascript 日历,带有用于格式化结果输出的选项:

"buddhist", "chinese", "coptic", "dangi", “ethioaa”、“埃塞俄比亚”、“格雷戈里”、“希伯来语”、“印度”、“伊斯兰”、“伊斯兰-umalqura”、“伊斯兰-tbla”、“伊斯兰-民用”、“伊斯兰-rgsa”、“iso8601” "、"japanese"、"persian"、"roc"、"islamicc"。

该方法也不使用复杂的数学或天文公式,并且仅依赖于 Javascript 内置日历转换算法,而这些算法又基于 ICU 代码 [https://icu.unicode.org/]。

这种方法可确保输出始终准确且完全符合 Javascript 引擎输出。

语法

persianToCalendars(year, month, day, [options])

在最简单的形式中,该函数默认使用 ISO 日期格式将波斯日期转换为 公历 日历。

示例:将波斯日期 Esfand 19, 1400(即 12/19/1400)转换为公历。

persianToCalendars(1400,12,19);

output: 2022-03-10T00:00:00.000Z    // default output Gregorian ISO format

将波斯日期转换为另一个日历(例如“伊斯兰”日历):

 persianToCalendars(1400,12,19, { toCal: "islamic-umalqura" });

 output: 8/7/1443 AH

向输出添加格式设置,使用 Javascript Intl.DateTimeFormat() 方法中的 'dateStyle' 选项。

示例:使用完整的 dateStyle 将波斯日期转换为伊斯兰日期

 persianToCalendars(1400,12,19, { toCal: "islamic-umalqura", dateStyle: "full" });

 output: Thursday, Shaʻban 7, 1443 AH

示例:使用波斯区域设置将波斯日期转换为希伯来语

 persianToCalendars(1400,12,19, { toCal:"hebrew", dateStyle: "full", locale:"fa"})

 output: پنجشنبه ۷ واذار الثانی ۵۷۸۲ تقویم عبری

上述操作可用于所有其他 18 个日历。

一项附加功能是能够将波斯日期格式化为任何可用的'dateStyles''locales' 无需转换

为此,请将 'toCal' 指定为 persian

示例:使用波斯语言区域设置格式化波斯日期

 persianToCalendars(1400,12,19,{toCal:"persian",dateStyle:"full", locale:"fa"}));

 output:  ۱۴۰۰ اسفند ۱۹, پنجشنبه         // mind the RTL requirements

示例:格式化波斯日期在印地语区域设置中

 persianToCalendars(1400,12,19,{ toCal : "persian", dateStyle : "full", locale : "hi"}));

 output: AP गुरुवार, 19 ईस्फन्द् 1400

您可以使用 Intl.DateTimeFormat() 中的所有可用选项来格式化输出日期。

无效的波斯日期

如果将无效的波斯日期传递给函数,将生成错误无效的波斯日期!

无效的波斯日期是指当月中的日期不正确或者日期或月份不正确的日期。

例如,波斯日期 1400/12/30 无效,因为波斯历的 12 月(“Esfand”月)是 1400 年的 29 天。

未来的 Javascript Temporal API 将使此任务变得更简单。

/*********************************************************************
* @function  : persianToCalendars(year, month, day, [options])
*
* @purpose   : Converts Persian/Iranian Date (Jalali Date) to the corresponding Gregorian Date.
*              Handles Persian dates from -272,442 AP to +275,139 AP.
*              Uses the 'JS Calendar Conversion by Target Approximation' Method.
*              No external libraries or complex mathematical/astronautical formulas.
*
* @version   : 1.00
* @author    : Mohsen Alyafei
* @date      : 17 Feb 2022
* @licence   : MIT
* @param     : year  : (numeric) Persian year  (-272442 to 275139)
* @param     : month : (numeric) Persian month (1 to 12) note: months is standard 1 based
* @param     : day   : (numeric) Persian day   (1 to 31)
* @param     : options: Object with the following optional parameters:
*
*              'toCal' : Specifies the the type of output Calendar to convert to with 18 Calendars:
*                        - "gregory" : (default)
*                        - "buddhist", "chinese", "coptic", "dangi", "ethioaa", "ethiopic",
*                          "hebrew", "indian", "islamic", "islamic-umalqura", "islamic-tbla",
*                          "islamic-civil", "islamic-rgsa", "iso8601", "japanese", "persian", "roc".
*
*               'dateStyle' Same as used in the Intl.DateTimeFormat() constructor.
*                           If not stated, default output is in Gregorian ISO Format: YYYY:MM:DDTHH:mm:ss.sssZ
*
*               'locale' The BCP 47 language tag for formatting (default is 'en'). If the 'locale'
*                        is given then no date conversion happens and the Persian date is formatted
*                        based on the specified 'dateStyle' and 'locale'.
*
*               Other options: As used in the Intl.DateTimeFormat() constructor.
*
* @returns   : Return the date in the calendar and format of the specified 'options'
**********************************************************************/




//==========================================================
function persianToCalendars(year, month, day, op={}) {
const formatOut= gD=> "toCal"in op?(op.calendar=op.toCal,new Intl.DateTimeFormat(op.locale??"en",op).format(gD)):gD,
      dFormat  = new Intl.DateTimeFormat('en-u-ca-persian',{dateStyle:'short',timeZone:"UTC"});
let   gD       = new Date(Date.UTC(2000,month,day));
      gD       = new Date(gD.setUTCDate(gD.getUTCDate() + 226867));
const gY       = gD.getUTCFullYear()-2000+year;
      gD       = new Date(((gY<0)?"-":"+")+("00000"+Math.abs(gY)).slice(-6)+"-"+("0"+(gD.getUTCMonth()+1)).slice(-2)+"-"+("0"+(gD.getUTCDate())).slice(-2));
let [pM,pD,pY] = [...dFormat.format(gD).split("/")], i=0;
      gD       = new Date(gD.setUTCDate(gD.getUTCDate() +
                 ~~(year*365.25+month*30.44+day-(pY.split(" ")[0]*365.25+pM*30.44+pD*1))-2));
while (i < 4) {
    [pM,pD,pY]=[...dFormat.format(gD).split("/")];
    if (pD==day && pM==month && pY.split(" ")[0]==year) return formatOut(gD);
    gD = new Date(gD.setUTCDate(gD.getUTCDate()+1));i++;
}
throw new Error('Invalid Persian Date!');
}
//==========================================================










//==========================================================
// Test Units
//==========================================================
console.log("-".repeat(55));
console.log("Convert the Persian Date '1400-12-19' to other calendars:");
console.log("input to function: persianToCalendars(1400,12,19, options)");
console.log("-".repeat(55));

console.log("Default (Gregory) ISO format   : ",persianToCalendars(1400,12,19)); // convert to default gregorian date
console.log("Gregory 'full' format          : ",persianToCalendars(1400,12,19,{toCal:"gregory",dateStyle:"full"}));
console.log("Islamic 'full' format          : ",persianToCalendars(1400,12,19,{toCal:"islamic",dateStyle:"full"}));
console.log("Islamic-Umaalqura 'short'format: ",persianToCalendars(1400,12,19,{toCal:"islamic-umalqura"}));
console.log("Islamic-Umaalqura 'full' format: ",persianToCalendars(1400,12,19,{toCal:"islamic-umalqura",dateStyle:"full"}));
console.log("Islamic-civil 'full' format    : ",persianToCalendars(1400,12,19,{toCal:"islamic-civil",dateStyle:"full"}));
console.log("Islamic-tbla 'full' format     : ",persianToCalendars(1400,12,19,{toCal:"islamic-tbla",dateStyle:"full"}));
console.log("Islamic-rgsa 'full' format     : ",persianToCalendars(1400,12,19,{toCal:"islamic-rgsa",dateStyle:"full"}));
console.log("Hebrew 'full' format           : ",persianToCalendars(1400,12,19,{toCal:"hebrew",dateStyle:"full"}));
console.log("Indian 'full' format           : ",persianToCalendars(1400,12,19,{toCal:"indian",dateStyle:"full"}));
console.log("Buddhist 'full' format         : ",persianToCalendars(1400,12,19,{toCal:"buddhist",dateStyle:"full"}));
console.log("Chinese 'full' format          : ",persianToCalendars(1400,12,19,{toCal:"chinese",dateStyle:"full"}));
console.log("Dangi (Korean) 'full' format   : ",persianToCalendars(1400,12,19,{toCal:"dangi",dateStyle:"full"}));
console.log("R.O.C. (Minguo) 'full' format  : ",persianToCalendars(1400,12,19,{toCal:"roc",dateStyle:"full"}));
console.log("Japanese 'full' format         : ",persianToCalendars(1400,12,19,{toCal:"japanese",dateStyle:"full"}));
console.log("Coptic 'full' format           : ",persianToCalendars(1400,12,19,{toCal:"coptic",dateStyle:"full"}));
console.log("Ethioaa 'full' format          : ",persianToCalendars(1400,12,19,{toCal:"ethioaa",dateStyle:"full"}));
console.log("Ethiopic 'full' format         : ",persianToCalendars(1400,12,19,{toCal:"ethiopic",dateStyle:"full"}));
console.log("-".repeat(55));
console.log("Format the input Persian Date without conversion:");
console.log("-".repeat(55));
console.log("Persian 'full' format        : ",persianToCalendars(1400,12,19,{toCal:"persian",dateStyle:"full"}));
console.log("Persian 'medium' format      : ",persianToCalendars(1400,12,19,{toCal:"persian",dateStyle:"medium"}));
console.log("Persian 'short' format       : ",persianToCalendars(1400,12,19,{toCal:"persian",dateStyle:"short"}));
console.log("Persian 'ar' locale          : ",persianToCalendars(1400,12,19,{toCal:"persian",dateStyle:"full", locale:"ar"}));
console.log("Persian 'fa' locale          : ",persianToCalendars(1400,12,19,{toCal:"persian",dateStyle:"full", locale:"fa"}));
console.log("Persian 'hi' locale          : ",persianToCalendars(1400,12,19,{toCal:"persian",dateStyle:"full", locale:"hi"}));
console.log("Persian 'ur' locale          : ",persianToCalendars(1400,12,19,{toCal:"persian",dateStyle:"full", locale:"ur"}));
console.log("Persian 'ps-AF' locale       : ",persianToCalendars(1400,12,19,{toCal:"persian",dateStyle:"full", locale:"ps-AF"}));
console.log("Persian 'id' locale          : ",persianToCalendars(1400,12,19,{toCal:"persian",dateStyle:"full", locale:"id"}));
console.log("Persian 'pa' locale          : ",persianToCalendars(1400,12,19,{toCal:"persian",dateStyle:"full", locale:"pa"}));
console.log("Persian 'ma' locale          : ",persianToCalendars(1400,12,19,{toCal:"persian",dateStyle:"full", locale:"ma"}));

console.log("-".repeat(55));
console.log("Convert Max Negative and Max Positive Persian Dates to Gregorian");
console.log("-".repeat(55));
console.log(persianToCalendars(-272442,12,29)); // max negative Persian date
console.log(persianToCalendars(275139,6,23));   // max positive Persian date

console.log("-".repeat(55));

The short Javascript function below does not use external libraries and provides the facilities to convert a Persian (Jalali) Dates (from Persian year -272,442 AP to +275,139 AP) into any of the following 18 Javascript Calendars with options for formatting the resulting output:

"buddhist", "chinese", "coptic", "dangi", "ethioaa", "ethiopic", "gregory", "hebrew", "indian", "islamic", "islamic-umalqura", "islamic-tbla", "islamic-civil", "islamic-rgsa", "iso8601", "japanese", "persian", "roc", "islamicc".

The method, also, does not use complex mathematical or astronomical formulas and relies solely on the Javascript built-in calendar conversion algorithms which are in turn based on the ICU code [https://icu.unicode.org/].

This approach ensures that the output is always accurate and fully compliant with the Javascript engine output.

Syntax

persianToCalendars(year, month, day, [options])

In its simplest form, the function defaults to converting the Persian Date into the Gregorian calendar using the ISO Date Format.

Example: Convert the Persian Date Esfand 19, 1400 (i.e. 12/19/1400) to Gregorian.

persianToCalendars(1400,12,19);

output: 2022-03-10T00:00:00.000Z    // default output Gregorian ISO format

To to convert Persian Date to another calendar (say 'Islamic' calendar):

 persianToCalendars(1400,12,19, { toCal: "islamic-umalqura" });

 output: 8/7/1443 AH

To add formatting to the output, use the 'dateStyle' options as in the Javascript Intl.DateTimeFormat() method.

Example: Convert Persian Date to Islamic Date with full dateStyle

 persianToCalendars(1400,12,19, { toCal: "islamic-umalqura", dateStyle: "full" });

 output: Thursday, Shaʻban 7, 1443 AH

Example: Convert a Persian Date into Hebrew with Persian Locale

 persianToCalendars(1400,12,19, { toCal:"hebrew", dateStyle: "full", locale:"fa"})

 output: پنجشنبه ۷ واذار الثانی ۵۷۸۲ تقویم عبری

The above can be done for all other 18 Calendars.

An added feature is the ability to format the Persian Date into any of the available 'dateStyles' and 'locales' without conversion.

To do that specify the 'toCal' to persian

Example: Use Persian Locale to Format a Persian Date

 persianToCalendars(1400,12,19,{toCal:"persian",dateStyle:"full", locale:"fa"}));

 output:  ۱۴۰۰ اسفند ۱۹, پنجشنبه         // mind the RTL requirements

Example: Format a Persian Date in the Hindi Locale

 persianToCalendars(1400,12,19,{ toCal : "persian", dateStyle : "full", locale : "hi"}));

 output: AP गुरुवार, 19 ईस्फन्द् 1400

You can use all the options available in the Intl.DateTimeFormat() for formatting the output date.

Invalid Persian Dates

If an invalid Persian Date is passed to the function an error Invalid Persian Date! will be generated.

Invalid Persian Dates are dates that have incorrect days in the month or incorrect days or months.

For example, the Persian Date 1400/12/30 is invalid because month 12 of the Persian Calendar (month "Esfand") is 29 days in the year 1400.

The future Javascript Temporal API will make this task simpler.

/*********************************************************************
* @function  : persianToCalendars(year, month, day, [options])
*
* @purpose   : Converts Persian/Iranian Date (Jalali Date) to the corresponding Gregorian Date.
*              Handles Persian dates from -272,442 AP to +275,139 AP.
*              Uses the 'JS Calendar Conversion by Target Approximation' Method.
*              No external libraries or complex mathematical/astronautical formulas.
*
* @version   : 1.00
* @author    : Mohsen Alyafei
* @date      : 17 Feb 2022
* @licence   : MIT
* @param     : year  : (numeric) Persian year  (-272442 to 275139)
* @param     : month : (numeric) Persian month (1 to 12) note: months is standard 1 based
* @param     : day   : (numeric) Persian day   (1 to 31)
* @param     : options: Object with the following optional parameters:
*
*              'toCal' : Specifies the the type of output Calendar to convert to with 18 Calendars:
*                        - "gregory" : (default)
*                        - "buddhist", "chinese", "coptic", "dangi", "ethioaa", "ethiopic",
*                          "hebrew", "indian", "islamic", "islamic-umalqura", "islamic-tbla",
*                          "islamic-civil", "islamic-rgsa", "iso8601", "japanese", "persian", "roc".
*
*               'dateStyle' Same as used in the Intl.DateTimeFormat() constructor.
*                           If not stated, default output is in Gregorian ISO Format: YYYY:MM:DDTHH:mm:ss.sssZ
*
*               'locale' The BCP 47 language tag for formatting (default is 'en'). If the 'locale'
*                        is given then no date conversion happens and the Persian date is formatted
*                        based on the specified 'dateStyle' and 'locale'.
*
*               Other options: As used in the Intl.DateTimeFormat() constructor.
*
* @returns   : Return the date in the calendar and format of the specified 'options'
**********************************************************************/




//==========================================================
function persianToCalendars(year, month, day, op={}) {
const formatOut= gD=> "toCal"in op?(op.calendar=op.toCal,new Intl.DateTimeFormat(op.locale??"en",op).format(gD)):gD,
      dFormat  = new Intl.DateTimeFormat('en-u-ca-persian',{dateStyle:'short',timeZone:"UTC"});
let   gD       = new Date(Date.UTC(2000,month,day));
      gD       = new Date(gD.setUTCDate(gD.getUTCDate() + 226867));
const gY       = gD.getUTCFullYear()-2000+year;
      gD       = new Date(((gY<0)?"-":"+")+("00000"+Math.abs(gY)).slice(-6)+"-"+("0"+(gD.getUTCMonth()+1)).slice(-2)+"-"+("0"+(gD.getUTCDate())).slice(-2));
let [pM,pD,pY] = [...dFormat.format(gD).split("/")], i=0;
      gD       = new Date(gD.setUTCDate(gD.getUTCDate() +
                 ~~(year*365.25+month*30.44+day-(pY.split(" ")[0]*365.25+pM*30.44+pD*1))-2));
while (i < 4) {
    [pM,pD,pY]=[...dFormat.format(gD).split("/")];
    if (pD==day && pM==month && pY.split(" ")[0]==year) return formatOut(gD);
    gD = new Date(gD.setUTCDate(gD.getUTCDate()+1));i++;
}
throw new Error('Invalid Persian Date!');
}
//==========================================================










//==========================================================
// Test Units
//==========================================================
console.log("-".repeat(55));
console.log("Convert the Persian Date '1400-12-19' to other calendars:");
console.log("input to function: persianToCalendars(1400,12,19, options)");
console.log("-".repeat(55));

console.log("Default (Gregory) ISO format   : ",persianToCalendars(1400,12,19)); // convert to default gregorian date
console.log("Gregory 'full' format          : ",persianToCalendars(1400,12,19,{toCal:"gregory",dateStyle:"full"}));
console.log("Islamic 'full' format          : ",persianToCalendars(1400,12,19,{toCal:"islamic",dateStyle:"full"}));
console.log("Islamic-Umaalqura 'short'format: ",persianToCalendars(1400,12,19,{toCal:"islamic-umalqura"}));
console.log("Islamic-Umaalqura 'full' format: ",persianToCalendars(1400,12,19,{toCal:"islamic-umalqura",dateStyle:"full"}));
console.log("Islamic-civil 'full' format    : ",persianToCalendars(1400,12,19,{toCal:"islamic-civil",dateStyle:"full"}));
console.log("Islamic-tbla 'full' format     : ",persianToCalendars(1400,12,19,{toCal:"islamic-tbla",dateStyle:"full"}));
console.log("Islamic-rgsa 'full' format     : ",persianToCalendars(1400,12,19,{toCal:"islamic-rgsa",dateStyle:"full"}));
console.log("Hebrew 'full' format           : ",persianToCalendars(1400,12,19,{toCal:"hebrew",dateStyle:"full"}));
console.log("Indian 'full' format           : ",persianToCalendars(1400,12,19,{toCal:"indian",dateStyle:"full"}));
console.log("Buddhist 'full' format         : ",persianToCalendars(1400,12,19,{toCal:"buddhist",dateStyle:"full"}));
console.log("Chinese 'full' format          : ",persianToCalendars(1400,12,19,{toCal:"chinese",dateStyle:"full"}));
console.log("Dangi (Korean) 'full' format   : ",persianToCalendars(1400,12,19,{toCal:"dangi",dateStyle:"full"}));
console.log("R.O.C. (Minguo) 'full' format  : ",persianToCalendars(1400,12,19,{toCal:"roc",dateStyle:"full"}));
console.log("Japanese 'full' format         : ",persianToCalendars(1400,12,19,{toCal:"japanese",dateStyle:"full"}));
console.log("Coptic 'full' format           : ",persianToCalendars(1400,12,19,{toCal:"coptic",dateStyle:"full"}));
console.log("Ethioaa 'full' format          : ",persianToCalendars(1400,12,19,{toCal:"ethioaa",dateStyle:"full"}));
console.log("Ethiopic 'full' format         : ",persianToCalendars(1400,12,19,{toCal:"ethiopic",dateStyle:"full"}));
console.log("-".repeat(55));
console.log("Format the input Persian Date without conversion:");
console.log("-".repeat(55));
console.log("Persian 'full' format        : ",persianToCalendars(1400,12,19,{toCal:"persian",dateStyle:"full"}));
console.log("Persian 'medium' format      : ",persianToCalendars(1400,12,19,{toCal:"persian",dateStyle:"medium"}));
console.log("Persian 'short' format       : ",persianToCalendars(1400,12,19,{toCal:"persian",dateStyle:"short"}));
console.log("Persian 'ar' locale          : ",persianToCalendars(1400,12,19,{toCal:"persian",dateStyle:"full", locale:"ar"}));
console.log("Persian 'fa' locale          : ",persianToCalendars(1400,12,19,{toCal:"persian",dateStyle:"full", locale:"fa"}));
console.log("Persian 'hi' locale          : ",persianToCalendars(1400,12,19,{toCal:"persian",dateStyle:"full", locale:"hi"}));
console.log("Persian 'ur' locale          : ",persianToCalendars(1400,12,19,{toCal:"persian",dateStyle:"full", locale:"ur"}));
console.log("Persian 'ps-AF' locale       : ",persianToCalendars(1400,12,19,{toCal:"persian",dateStyle:"full", locale:"ps-AF"}));
console.log("Persian 'id' locale          : ",persianToCalendars(1400,12,19,{toCal:"persian",dateStyle:"full", locale:"id"}));
console.log("Persian 'pa' locale          : ",persianToCalendars(1400,12,19,{toCal:"persian",dateStyle:"full", locale:"pa"}));
console.log("Persian 'ma' locale          : ",persianToCalendars(1400,12,19,{toCal:"persian",dateStyle:"full", locale:"ma"}));

console.log("-".repeat(55));
console.log("Convert Max Negative and Max Positive Persian Dates to Gregorian");
console.log("-".repeat(55));
console.log(persianToCalendars(-272442,12,29)); // max negative Persian date
console.log(persianToCalendars(275139,6,23));   // max positive Persian date

console.log("-".repeat(55));

时光无声 2025-01-20 12:07:16

只需一行代码。

new Date(Date.UTC(2022,11,12)).toLocaleDateString('fa-IR') // ۱۴۰۱/۹/۲۱

有关更多信息,请查看MDN 文档

Just one line of code.

new Date(Date.UTC(2022,11,12)).toLocaleDateString('fa-IR') // ۱۴۰۱/۹/۲۱

for more information check MDN doc

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文