Files
2026-06-04 11:42:34 +02:00

393 lines
21 KiB
C#

using System;
using System.Runtime.InteropServices;
namespace System.Globalization
{
/// <summary>Represents the Japanese calendar.</summary>
// Token: 0x0200018D RID: 397
[ComVisible(true)]
[MonoTODO("Serialization format not compatible with .NET")]
[Serializable]
public class JapaneseCalendar : Calendar
{
/// <summary>Initializes a new instance of the <see cref="T:System.Globalization.JapaneseCalendar" /> class.</summary>
// Token: 0x060013B9 RID: 5049 RVA: 0x0004CDC8 File Offset: 0x0004AFC8
public JapaneseCalendar()
{
this.M_AbbrEraNames = new string[] { "M", "T", "S", "H" };
this.M_EraNames = new string[] { "Meiji", "Taisho", "Showa", "Heisei" };
}
// Token: 0x060013BA RID: 5050 RVA: 0x0004CE34 File Offset: 0x0004B034
static JapaneseCalendar()
{
JapaneseCalendar.M_EraHandler.appendEra(1, CCGregorianCalendar.fixed_from_dmy(8, 9, 1868), CCGregorianCalendar.fixed_from_dmy(29, 7, 1912));
JapaneseCalendar.M_EraHandler.appendEra(2, CCGregorianCalendar.fixed_from_dmy(30, 7, 1912), CCGregorianCalendar.fixed_from_dmy(24, 12, 1926));
JapaneseCalendar.M_EraHandler.appendEra(3, CCGregorianCalendar.fixed_from_dmy(25, 12, 1926), CCGregorianCalendar.fixed_from_dmy(7, 1, 1989));
JapaneseCalendar.M_EraHandler.appendEra(4, CCGregorianCalendar.fixed_from_dmy(8, 1, 1989));
}
/// <summary>Gets the list of eras in the <see cref="T:System.Globalization.JapaneseCalendar" />.</summary>
/// <returns>An array of integers that represents the eras in the <see cref="T:System.Globalization.JapaneseCalendar" />.</returns>
// Token: 0x17000360 RID: 864
// (get) Token: 0x060013BB RID: 5051 RVA: 0x0004CF00 File Offset: 0x0004B100
public override int[] Eras
{
get
{
return (int[])JapaneseCalendar.M_EraHandler.Eras.Clone();
}
}
/// <summary>Gets or sets the last year of a 100-year range that can be represented by a 2-digit year.</summary>
/// <returns>The last year of a 100-year range that can be represented by a 2-digit year.</returns>
/// <PermissionSet>
/// <IPermission class="System.Security.Permissions.EnvironmentPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Unrestricted="true" />
/// <IPermission class="System.Security.Permissions.RegistryPermission, mscorlib, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Unrestricted="true" />
/// </PermissionSet>
// Token: 0x17000361 RID: 865
// (get) Token: 0x060013BC RID: 5052 RVA: 0x0004CF18 File Offset: 0x0004B118
// (set) Token: 0x060013BD RID: 5053 RVA: 0x0004CF20 File Offset: 0x0004B120
public override int TwoDigitYearMax
{
get
{
return this.twoDigitYearMax;
}
set
{
base.CheckReadOnly();
base.M_ArgumentInRange("value", value, 100, this.M_MaxYear);
this.twoDigitYearMax = value;
}
}
// Token: 0x060013BE RID: 5054 RVA: 0x0004CF50 File Offset: 0x0004B150
internal void M_CheckDateTime(DateTime time)
{
JapaneseCalendar.M_EraHandler.CheckDateTime(time);
}
// Token: 0x060013BF RID: 5055 RVA: 0x0004CF60 File Offset: 0x0004B160
internal void M_CheckEra(ref int era)
{
if (era == 0)
{
era = 4;
}
if (!JapaneseCalendar.M_EraHandler.ValidEra(era))
{
throw new ArgumentException("Era value was not valid.");
}
}
// Token: 0x060013C0 RID: 5056 RVA: 0x0004CF94 File Offset: 0x0004B194
internal int M_CheckYEG(int year, ref int era)
{
this.M_CheckEra(ref era);
return JapaneseCalendar.M_EraHandler.GregorianYear(year, era);
}
// Token: 0x060013C1 RID: 5057 RVA: 0x0004CFAC File Offset: 0x0004B1AC
internal override void M_CheckYE(int year, ref int era)
{
this.M_CheckYEG(year, ref era);
}
// Token: 0x060013C2 RID: 5058 RVA: 0x0004CFB8 File Offset: 0x0004B1B8
internal int M_CheckYMEG(int year, int month, ref int era)
{
int num = this.M_CheckYEG(year, ref era);
if (month < 1 || month > 12)
{
throw new ArgumentOutOfRangeException("month", "Month must be between one and twelve.");
}
return num;
}
// Token: 0x060013C3 RID: 5059 RVA: 0x0004CFF0 File Offset: 0x0004B1F0
internal int M_CheckYMDEG(int year, int month, int day, ref int era)
{
int num = this.M_CheckYMEG(year, month, ref era);
base.M_ArgumentInRange("day", day, 1, this.GetDaysInMonth(year, month, era));
return num;
}
/// <summary>Returns a <see cref="T:System.DateTime" /> that is the specified number of months away from the specified <see cref="T:System.DateTime" />.</summary>
/// <returns>The <see cref="T:System.DateTime" /> that results from adding the specified number of months to the specified <see cref="T:System.DateTime" />.</returns>
/// <param name="time">The <see cref="T:System.DateTime" /> to which to add months. </param>
/// <param name="months">The number of months to add. </param>
/// <exception cref="T:System.ArgumentException">The resulting <see cref="T:System.DateTime" /> is outside the supported range. </exception>
/// <exception cref="T:System.ArgumentOutOfRangeException">
/// <paramref name="months" /> is less than -120000.-or- <paramref name="months" /> is greater than 120000. </exception>
// Token: 0x060013C4 RID: 5060 RVA: 0x0004D024 File Offset: 0x0004B224
public override DateTime AddMonths(DateTime time, int months)
{
DateTime dateTime = CCGregorianCalendar.AddMonths(time, months);
this.M_CheckDateTime(dateTime);
return dateTime;
}
/// <summary>Returns a <see cref="T:System.DateTime" /> that is the specified number of years away from the specified <see cref="T:System.DateTime" />.</summary>
/// <returns>The <see cref="T:System.DateTime" /> that results from adding the specified number of years to the specified <see cref="T:System.DateTime" />.</returns>
/// <param name="time">The <see cref="T:System.DateTime" /> to which to add years. </param>
/// <param name="years">The number of years to add. </param>
/// <exception cref="T:System.ArgumentException">The resulting <see cref="T:System.DateTime" /> is outside the supported range. </exception>
/// <exception cref="T:System.ArgumentOutOfRangeException">
/// <paramref name="time" /> is outside the supported range of the <see cref="T:System.Globalization.JapaneseCalendar" /> type.-or-<paramref name="years" /> is less than -10,000 or greater than 10,000. </exception>
// Token: 0x060013C5 RID: 5061 RVA: 0x0004D044 File Offset: 0x0004B244
public override DateTime AddYears(DateTime time, int years)
{
DateTime dateTime = CCGregorianCalendar.AddYears(time, years);
this.M_CheckDateTime(dateTime);
return dateTime;
}
/// <summary>Returns the day of the month in the specified <see cref="T:System.DateTime" />.</summary>
/// <returns>An integer from 1 to 31 that represents the day of the month in the specified <see cref="T:System.DateTime" />.</returns>
/// <param name="time">The <see cref="T:System.DateTime" /> to read. </param>
// Token: 0x060013C6 RID: 5062 RVA: 0x0004D064 File Offset: 0x0004B264
public override int GetDayOfMonth(DateTime time)
{
this.M_CheckDateTime(time);
return CCGregorianCalendar.GetDayOfMonth(time);
}
/// <summary>Returns the day of the week in the specified <see cref="T:System.DateTime" />.</summary>
/// <returns>A <see cref="T:System.DayOfWeek" /> value that represents the day of the week in the specified <see cref="T:System.DateTime" />.</returns>
/// <param name="time">The <see cref="T:System.DateTime" /> to read. </param>
// Token: 0x060013C7 RID: 5063 RVA: 0x0004D074 File Offset: 0x0004B274
public override DayOfWeek GetDayOfWeek(DateTime time)
{
this.M_CheckDateTime(time);
int num = CCFixed.FromDateTime(time);
return CCFixed.day_of_week(num);
}
/// <summary>Returns the day of the year in the specified <see cref="T:System.DateTime" />.</summary>
/// <returns>An integer from 1 to 366 that represents the day of the year in the specified <see cref="T:System.DateTime" />.</returns>
/// <param name="time">The <see cref="T:System.DateTime" /> to read. </param>
// Token: 0x060013C8 RID: 5064 RVA: 0x0004D098 File Offset: 0x0004B298
public override int GetDayOfYear(DateTime time)
{
this.M_CheckDateTime(time);
return CCGregorianCalendar.GetDayOfYear(time);
}
/// <summary>Returns the number of days in the specified month in the specified year in the specified era.</summary>
/// <returns>The number of days in the specified month in the specified year in the specified era.</returns>
/// <param name="year">An integer that represents the year. </param>
/// <param name="month">An integer from 1 to 12 that represents the month. </param>
/// <param name="era">An integer that represents the era. </param>
/// <exception cref="T:System.ArgumentOutOfRangeException">
/// <paramref name="year" /> is outside the range supported by the calendar.-or- <paramref name="month" /> is outside the range supported by the calendar.-or- <paramref name="era" /> is outside the range supported by the calendar. </exception>
// Token: 0x060013C9 RID: 5065 RVA: 0x0004D0A8 File Offset: 0x0004B2A8
public override int GetDaysInMonth(int year, int month, int era)
{
int num = this.M_CheckYMEG(year, month, ref era);
return CCGregorianCalendar.GetDaysInMonth(num, month);
}
/// <summary>Returns the number of days in the specified year in the specified era.</summary>
/// <returns>The number of days in the specified year in the specified era.</returns>
/// <param name="year">An integer that represents the year. </param>
/// <param name="era">An integer that represents the era. </param>
/// <exception cref="T:System.ArgumentOutOfRangeException">
/// <paramref name="year" /> is outside the range supported by the calendar.-or- <paramref name="era" /> is outside the range supported by the calendar. </exception>
// Token: 0x060013CA RID: 5066 RVA: 0x0004D0C8 File Offset: 0x0004B2C8
public override int GetDaysInYear(int year, int era)
{
int num = this.M_CheckYEG(year, ref era);
return CCGregorianCalendar.GetDaysInYear(num);
}
/// <summary>Returns the era in the specified <see cref="T:System.DateTime" />.</summary>
/// <returns>An integer that represents the era in the specified <see cref="T:System.DateTime" />.</returns>
/// <param name="time">The <see cref="T:System.DateTime" /> to read. </param>
/// <exception cref="T:System.ArgumentException">The resulting <see cref="T:System.DateTime" /> is outside the supported range. </exception>
// Token: 0x060013CB RID: 5067 RVA: 0x0004D0E8 File Offset: 0x0004B2E8
public override int GetEra(DateTime time)
{
int num = CCFixed.FromDateTime(time);
int num2;
JapaneseCalendar.M_EraHandler.EraYear(out num2, num);
return num2;
}
/// <summary>Calculates the leap month for a specified year and era.</summary>
/// <returns>The return value is always 0 because the <see cref="T:System.Globalization.JapaneseCalendar" /> type does not support the notion of a leap month.</returns>
/// <param name="year">A year.</param>
/// <param name="era">An era.</param>
/// <exception cref="T:System.ArgumentOutOfRangeException">
/// <paramref name="year" /> or <paramref name="era" /> is outside the range supported by the <see cref="T:System.Globalization.JapaneseCalendar" /> type.</exception>
// Token: 0x060013CC RID: 5068 RVA: 0x0004D10C File Offset: 0x0004B30C
[ComVisible(false)]
public override int GetLeapMonth(int year, int era)
{
return 0;
}
/// <summary>Returns the month in the specified <see cref="T:System.DateTime" />.</summary>
/// <returns>An integer from 1 to 12 that represents the month in the specified <see cref="T:System.DateTime" />.</returns>
/// <param name="time">The <see cref="T:System.DateTime" /> to read. </param>
// Token: 0x060013CD RID: 5069 RVA: 0x0004D110 File Offset: 0x0004B310
public override int GetMonth(DateTime time)
{
this.M_CheckDateTime(time);
return CCGregorianCalendar.GetMonth(time);
}
/// <summary>Returns the number of months in the specified year in the specified era.</summary>
/// <returns>The return value is always 12.</returns>
/// <param name="year">An integer that represents the year. </param>
/// <param name="era">An integer that represents the era. </param>
/// <exception cref="T:System.ArgumentOutOfRangeException">
/// <paramref name="year" /> is outside the range supported by the calendar.-or- <paramref name="era" /> is outside the range supported by the calendar. </exception>
// Token: 0x060013CE RID: 5070 RVA: 0x0004D120 File Offset: 0x0004B320
public override int GetMonthsInYear(int year, int era)
{
this.M_CheckYE(year, ref era);
return 12;
}
/// <summary>Returns the week of the year that includes the date in the specified <see cref="T:System.DateTime" />.</summary>
/// <returns>A 1-based integer that represents the week of the year that includes the date in the <paramref name="time" /> parameter.</returns>
/// <param name="time">The <see cref="T:System.DateTime" /> to read. </param>
/// <param name="rule">One of the <see cref="T:System.Globalization.CalendarWeekRule" /> values that defines a calendar week. </param>
/// <param name="firstDayOfWeek">One of the <see cref="T:System.DayOfWeek" /> values that represents the first day of the week. </param>
/// <exception cref="T:System.ArgumentOutOfRangeException">
/// <paramref name="time" /> or <paramref name="firstDayOfWeek" /> is outside the range supported by the calendar.-or- <paramref name="rule" /> is not a valid <see cref="T:System.Globalization.CalendarWeekRule" /> value. </exception>
// Token: 0x060013CF RID: 5071 RVA: 0x0004D130 File Offset: 0x0004B330
[ComVisible(false)]
public override int GetWeekOfYear(DateTime time, CalendarWeekRule rule, DayOfWeek firstDayOfWeek)
{
return base.GetWeekOfYear(time, rule, firstDayOfWeek);
}
/// <summary>Returns the year in the specified <see cref="T:System.DateTime" />.</summary>
/// <returns>An integer that represents the year in the specified <see cref="T:System.DateTime" />.</returns>
/// <param name="time">The <see cref="T:System.DateTime" /> to read. </param>
// Token: 0x060013D0 RID: 5072 RVA: 0x0004D13C File Offset: 0x0004B33C
public override int GetYear(DateTime time)
{
int num = CCFixed.FromDateTime(time);
int num2;
return JapaneseCalendar.M_EraHandler.EraYear(out num2, num);
}
/// <summary>Determines whether the specified date in the specified era is a leap day.</summary>
/// <returns>true, if the specified day is a leap day; otherwise, false.</returns>
/// <param name="year">An integer that represents the year. </param>
/// <param name="month">An integer from 1 to 12 that represents the month. </param>
/// <param name="day">An integer from 1 to 31 that represents the day. </param>
/// <param name="era">An integer that represents the era. </param>
/// <exception cref="T:System.ArgumentOutOfRangeException">
/// <paramref name="year" /> is outside the range supported by the calendar.-or- <paramref name="month" /> is outside the range supported by the calendar.-or- <paramref name="day" /> is outside the range supported by the calendar.-or- <paramref name="era" /> is outside the range supported by the calendar. </exception>
// Token: 0x060013D1 RID: 5073 RVA: 0x0004D160 File Offset: 0x0004B360
public override bool IsLeapDay(int year, int month, int day, int era)
{
int num = this.M_CheckYMDEG(year, month, day, ref era);
return CCGregorianCalendar.IsLeapDay(num, month, day);
}
/// <summary>Determines whether the specified month in the specified year in the specified era is a leap month.</summary>
/// <returns>This method always returns false, unless overridden by a derived class.</returns>
/// <param name="year">An integer that represents the year. </param>
/// <param name="month">An integer from 1 to 12 that represents the month. </param>
/// <param name="era">An integer that represents the era. </param>
/// <exception cref="T:System.ArgumentOutOfRangeException">
/// <paramref name="year" /> is outside the range supported by the calendar.-or- <paramref name="month" /> is outside the range supported by the calendar.-or- <paramref name="era" /> is outside the range supported by the calendar. </exception>
// Token: 0x060013D2 RID: 5074 RVA: 0x0004D184 File Offset: 0x0004B384
public override bool IsLeapMonth(int year, int month, int era)
{
this.M_CheckYMEG(year, month, ref era);
return false;
}
/// <summary>Determines whether the specified year in the specified era is a leap year.</summary>
/// <returns>true, if the specified year is a leap year; otherwise, false.</returns>
/// <param name="year">An integer that represents the year. </param>
/// <param name="era">An integer that represents the era. </param>
/// <exception cref="T:System.ArgumentOutOfRangeException">
/// <paramref name="year" /> is outside the range supported by the calendar.-or- <paramref name="era" /> is outside the range supported by the calendar. </exception>
// Token: 0x060013D3 RID: 5075 RVA: 0x0004D194 File Offset: 0x0004B394
public override bool IsLeapYear(int year, int era)
{
int num = this.M_CheckYEG(year, ref era);
return CCGregorianCalendar.is_leap_year(num);
}
/// <summary>Returns a <see cref="T:System.DateTime" /> that is set to the specified date and time in the specified era.</summary>
/// <returns>The <see cref="T:System.DateTime" /> that is set to the specified date and time in the current era.</returns>
/// <param name="year">An integer that represents the year. </param>
/// <param name="month">An integer from 1 to 12 that represents the month. </param>
/// <param name="day">An integer from 1 to 31 that represents the day. </param>
/// <param name="hour">An integer from 0 to 23 that represents the hour. </param>
/// <param name="minute">An integer from 0 to 59 that represents the minute. </param>
/// <param name="second">An integer from 0 to 59 that represents the second. </param>
/// <param name="millisecond">An integer from 0 to 999 that represents the millisecond. </param>
/// <param name="era">An integer that represents the era. </param>
/// <exception cref="T:System.ArgumentOutOfRangeException">
/// <paramref name="year" /> is outside the range supported by the calendar.-or- <paramref name="month" /> is outside the range supported by the calendar.-or- <paramref name="day" /> is outside the range supported by the calendar.-or- <paramref name="hour" /> is less than zero or greater than 23.-or- <paramref name="minute" /> is less than zero or greater than 59.-or- <paramref name="second" /> is less than zero or greater than 59.-or- <paramref name="millisecond" /> is less than zero or greater than 999.-or- <paramref name="era" /> is outside the range supported by the calendar. </exception>
// Token: 0x060013D4 RID: 5076 RVA: 0x0004D1B4 File Offset: 0x0004B3B4
public override DateTime ToDateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, int era)
{
int num = this.M_CheckYMDEG(year, month, day, ref era);
base.M_CheckHMSM(hour, minute, second, millisecond);
return CCGregorianCalendar.ToDateTime(num, month, day, hour, minute, second, millisecond);
}
/// <summary>Converts the specified year to a four-digit year by using the <see cref="P:System.Globalization.JapaneseCalendar.TwoDigitYearMax" /> property to determine the appropriate century.</summary>
/// <returns>An integer that contains the four-digit representation of <paramref name="year" />.</returns>
/// <param name="year">An integer (usually two digits) that represents the year to convert. </param>
/// <exception cref="T:System.ArgumentOutOfRangeException">
/// <paramref name="year" /> is outside the range supported by the calendar. </exception>
// Token: 0x060013D5 RID: 5077 RVA: 0x0004D1EC File Offset: 0x0004B3EC
public override int ToFourDigitYear(int year)
{
if (year < 0)
{
throw new ArgumentOutOfRangeException("year", "Non-negative number required.");
}
int num = 0;
this.M_CheckYE(year, ref num);
return year;
}
/// <summary>Gets the earliest date and time supported by the current <see cref="T:System.Globalization.JapaneseCalendar" /> object.</summary>
/// <returns>The earliest date and time supported by the <see cref="T:System.Globalization.JapaneseCalendar" /> type, which is equivalent to the first moment of January 1, 1868 C.E. in the Gregorian calendar. </returns>
// Token: 0x17000362 RID: 866
// (get) Token: 0x060013D6 RID: 5078 RVA: 0x0004D21C File Offset: 0x0004B41C
[ComVisible(false)]
public override DateTime MinSupportedDateTime
{
get
{
return JapaneseCalendar.JapanMin;
}
}
/// <summary>Gets the latest date and time supported by the current <see cref="T:System.Globalization.JapaneseCalendar" /> object.</summary>
/// <returns>The latest date and time supported by the <see cref="T:System.Globalization.JapaneseCalendar" /> type, which is equivalent to the last moment of December 31, 9999 C.E. in the Gregorian calendar.</returns>
// Token: 0x17000363 RID: 867
// (get) Token: 0x060013D7 RID: 5079 RVA: 0x0004D224 File Offset: 0x0004B424
[ComVisible(false)]
public override DateTime MaxSupportedDateTime
{
get
{
return JapaneseCalendar.JapanMax;
}
}
// Token: 0x0400057C RID: 1404
internal static readonly CCGregorianEraHandler M_EraHandler = new CCGregorianEraHandler();
// Token: 0x0400057D RID: 1405
private static DateTime JapanMin = new DateTime(1868, 9, 8, 0, 0, 0);
// Token: 0x0400057E RID: 1406
private static DateTime JapanMax = new DateTime(9999, 12, 31, 11, 59, 59);
}
}