We need you! We're working hard on the next version of Developer Fusion -
Let us know what you think we should be up to!
-
Expand
Microsoft.Win32
-
Expand
Microsoft.Win32.SafeHandles
-
Expand
System
-
Expand
System.Runtime.Hosting
-
Expand
System.Runtime.InteropServices
-
Expand
System.Runtime.CompilerServices
-
Expand
System.Collections
-
Expand
System.Collections.Generic
-
Expand
System.Collections.ObjectModel
-
Expand
System.Configuration.Assemblies
-
Expand
System.Diagnostics
-
Expand
System.Diagnostics.CodeAnalysis
-
Expand
System.Diagnostics.SymbolStore
-
Expand
System.Globalization
-
Expand
__DateBuffer
-
Expand
BaseInfoTable
-
Expand
BidiCategory
-
Expand
Calendar
-
Expand
CalendarAlgorithmType
-
Expand
CalendarId
-
Expand
CalendarTable
-
Expand
CalendarTableData
-
Expand
CalendarWeekRule
-
Expand
CharUnicodeInfo
-
Expand
ChineseLunisolarCalendar
-
Expand
CodePageDataItem
-
Expand
CompareInfo
-
Expand
CompareOptions
-
Expand
CultureData
-
Expand
CultureFlags
-
Expand
CultureInfo
-
Expand
CultureNameOffsetItem
-
Expand
CultureTable
-
Expand
CultureTableData
-
Expand
CultureTableHeader
-
Expand
CultureTableItem
-
Expand
CultureTableRecord
-
Expand
CultureTypes
-
Expand
DateMapping
-
Expand
DateTimeFormatFlags
-
Expand
DateTimeFormatInfo
-
Expand
DateTimeFormatInfoScanner
-
Expand
DateTimeStyles
-
Expand
DaylightTime
-
Expand
DigitShapes
-
Expand
DigitValues
-
Expand
DTFIUserOverrideValues
-
Expand
EastAsianLunisolarCalendar
-
AddMonths(DateTime, int)
-
AddYears(DateTime, int)
-
AlgorithmType()
-
CalEraInfo()
-
CheckEraRange(int)
-
CheckTicksRange(long)
-
CheckYearMonthRange(int, int, int)
-
CheckYearRange(int, int)
-
EastAsianLunisolarCalendar()
-
GergIsleap(int)
-
GetCelestialStem(int)
-
GetDayOfMonth(DateTime)
-
GetDayOfWeek(DateTime)
-
GetDayOfYear(DateTime)
-
GetDaysInMonth(int, int, int)
-
GetDaysInYear(int, int)
-
GetGregorianYear(int, int)
-
GetLeapMonth(int, int)
-
GetMonth(DateTime)
-
GetMonthsInYear(int, int)
-
GetSexagenaryYear(DateTime)
-
GetTerrestrialBranch(int)
-
GetYear(DateTime)
-
GetYear(int, DateTime)
-
GetYearInfo(int, int)
-
GregorianToLunar(int, int, int, int, int, int)
-
InternalGetDaysInMonth(int, int)
-
InternalIsLeapYear(int)
-
IsLeapDay(int, int, int, int)
-
IsLeapMonth(int, int, int)
-
IsLeapYear(int, int)
-
LunarToGregorian(int, int, int, int, int, int)
-
LunarToTime(DateTime, int, int, int)
-
MaxCalendarYear()
-
MaxDate()
-
MaxEraCalendarYear(int)
-
MinCalendarYear()
-
MinDate()
-
MinEraCalendarYear(int)
-
TimeToLunar(DateTime, int, int, int)
-
ToDateTime(int, int, int, int, int, int, int, int)
-
ToFourDigitYear(int)
-
TwoDigitYearMax()
-
Expand
EncodingTable
-
Expand
EndianessHeader
-
Expand
EraInfo
-
Expand
ExceptionTableItem
-
Expand
FORMATFLAGS
-
Expand
FoundDatePattern
-
Expand
GlobalizationAssembly
-
Expand
GregorianCalendar
-
Expand
GregorianCalendarHelper
-
Expand
GregorianCalendarTypes
-
Expand
HebrewCalendar
-
Expand
HebrewNumber
-
Expand
HebrewNumberParsingContext
-
Expand
HebrewNumberParsingState
-
Expand
HebrewToken
-
Expand
HebrewValue
-
Expand
HijriCalendar
-
Expand
HS
-
Expand
IdnMapping
-
Expand
IDOffsetItem
-
Expand
IetfNameOffsetItem
-
Expand
InternalCodePageDataItem
-
Expand
InternalEncodingDataItem
-
Expand
JapaneseCalendar
-
Expand
JapaneseLunisolarCalendar
-
Expand
JulianCalendar
-
Expand
KoreanCalendar
-
Expand
KoreanLunisolarCalendar
-
Expand
MemoryMapFile
-
Expand
MonthNameStyles
-
Expand
NumberFormatInfo
-
Expand
NumberStyles
-
Expand
PersianCalendar
-
Expand
RegionInfo
-
Expand
RegionNameOffsetItem
-
Expand
SortKey
-
Expand
StringInfo
-
Expand
TaiwanCalendar
-
Expand
TaiwanLunisolarCalendar
-
Expand
TextElementEnumerator
-
Expand
TextInfo
-
Expand
TextInfoDataHeader
-
Expand
ThaiBuddhistCalendar
-
Expand
TokenHashValue
-
Expand
UmAlQuraCalendar
-
Expand
UnicodeCategory
-
Expand
UnicodeDataHeader
-
Expand
System.IO
-
Expand
System.IO.IsolatedStorage
-
Expand
System.Reflection
-
Expand
System.Reflection.Cache
-
Expand
System.Reflection.Emit
-
Expand
System.Resources
-
Expand
System.Runtime
-
Expand
System.Runtime.InteropServices.Expando
-
Expand
System.Runtime.ConstrainedExecution
-
Expand
System.Runtime.Remoting.Activation
-
Expand
System.Runtime.Remoting.Messaging
-
Expand
System.Runtime.Remoting.Channels
-
Expand
System.Runtime.Remoting.Lifetime
-
Expand
System.Runtime.Remoting
-
Expand
System.Runtime.Remoting.Contexts
-
Expand
System.Runtime.Remoting.Proxies
-
Expand
System.Runtime.Remoting.Metadata
-
Expand
System.Runtime.Remoting.Metadata.W3cXsd2001
-
Expand
System.Runtime.Remoting.Services
-
Expand
System.Runtime.Serialization
-
Expand
System.Runtime.Serialization.Formatters
-
Expand
System.Runtime.Serialization.Formatters.Binary
-
Expand
System.Runtime.Versioning
-
Expand
System.Security
-
Expand
System.Security.Cryptography
-
Expand
System.Security.Cryptography.X509Certificates
-
Expand
System.Security.Permissions
-
Expand
System.Security.Policy
-
Expand
System.Security.Principal
-
Expand
System.Security.Util
-
Expand
System.Text
-
Expand
System.Threading
-
Expand
System.Runtime.Remoting.Channels.Http
-
Expand
System.Runtime.Remoting.Channels.Tcp
-
Expand
System.Runtime.Remoting.MetadataServices
-
Expand
System.Runtime.Serialization.Formatters.Soap.Xml
-
Expand
System.Runtime.Serialization.Formatters.Soap
-
Expand
Microsoft.Tools.Caspol
-
Expand
Microsoft.Tools.Build
-
Expand
Microsoft.CSharp
-
Expand
System.CodeDom
-
Expand
System.CodeDom.Compiler
-
Expand
System.Collections.Specialized
-
Expand
System.ComponentModel
-
Expand
System.ComponentModel.Design
-
Expand
System.ComponentModel.Design.Serialization
-
Expand
System.Configuration
-
Expand
System.Web
-
Expand
System.Configuration.Provider
-
Expand
System.Configuration.Internal
-
Expand
System.Internal
-
Expand
System.Windows.Forms
-
Expand
System.Net
-
Expand
System.Net.Sockets
-
Expand
System.Net.NetworkInformation
-
Expand
System.Net.ComImports
-
Expand
System.Net.Security
-
Expand
System.Net.Cache
-
Expand
System.Net.Configuration
-
Expand
System.Text.RegularExpressions
-
Expand
System.Tools
-
Expand
System.IO.Compression
-
Expand
System.IO.Ports
-
Expand
System.Security.AccessControl
-
Expand
System.Xml
-
Expand
System.Xml.XPath.DataBinding
-
Expand
System.Xml.Schema
-
Expand
System.Xml.Serialization
-
Expand
System.Xml.Serialization.Advanced
-
Expand
System.Xml.Serialization.Configuration
-
Expand
System.Xml.XPath
-
Expand
System.Xml.Xsl
-
Expand
System.Xml.Xsl.IlGen
-
Expand
System.Xml.Xsl.Qil
-
Expand
System.Xml.Xsl.Runtime
-
Expand
System.Xml.Xsl.XPath
-
Expand
System.Xml.Xsl.Xslt
-
Expand
System.Xml.Xsl.XsltOld
-
Expand
System.Xml.Xsl.XsltOld.Debugger
-
Expand
Microsoft.JScript
-
Expand
Microsoft.Vsa
-
Expand
Microsoft.JScript.Vsa
- namespace System.Globalization
- {
- using System;
-
- ////////////////////////////////////////////////////////////////////////////
-
-
-
- ////////////////////////////////////////////////////////////////////////////
-
-
- [Serializable()]
- [System.Runtime.InteropServices.ComVisible(true)]
- public abstract class EastAsianLunisolarCalendar : Calendar
- {
- internal const int LeapMonth = 0;
- internal const int Jan1Month = 1;
- internal const int Jan1Date = 2;
- internal const int nDaysPerMonth = 3;
-
-
- static internal readonly int[] DaysToMonth365 = {0, 31, 59, 90, 120, 151, 181, 212, 243, 273,
- 304, 334};
-
- static internal readonly int[] DaysToMonth366 = {0, 31, 60, 91, 121, 152, 182, 213, 244, 274,
- 305, 335};
-
- internal const int DatePartYear = 0;
- internal const int DatePartDayOfYear = 1;
- internal const int DatePartMonth = 2;
- internal const int DatePartDay = 3;
-
-
-
-
- public override CalendarAlgorithmType AlgorithmType {
- get { return CalendarAlgorithmType.LunisolarCalendar; }
- }
-
-
-
-
- public virtual int GetSexagenaryYear(DateTime time)
- {
- CheckTicksRange(time.Ticks);
-
- int year = 0;
- int month = 0;
- int day = 0;
- TimeToLunar(time, ref year, ref month, ref day);
-
- return ((year - 4) % 60) + 1;
- }
-
-
-
-
-
- public int GetCelestialStem(int sexagenaryYear)
- {
- if ((sexagenaryYear < 1) || (sexagenaryYear > 60)) {
- throw new ArgumentOutOfRangeException("sexagenaryYear", String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("ArgumentOutOfRange_Range"), 1, 60));
- }
-
- return ((sexagenaryYear - 1) % 10) + 1;
- }
-
-
-
-
-
- public int GetTerrestrialBranch(int sexagenaryYear)
- {
- if ((sexagenaryYear < 1) || (sexagenaryYear > 60)) {
- throw new ArgumentOutOfRangeException("sexagenaryYear", String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("ArgumentOutOfRange_Range"), 1, 60));
- }
-
- return ((sexagenaryYear - 1) % 12) + 1;
- }
-
- internal abstract int GetYearInfo(int LunarYear, int Index);
- internal abstract int GetYear(int year, DateTime time);
- internal abstract int GetGregorianYear(int year, int era);
-
- internal abstract int MinCalendarYear {
- get;
- }
- internal abstract int MaxCalendarYear {
- get;
- }
- internal abstract EraInfo[] CalEraInfo {
- get;
- }
- internal abstract DateTime MinDate {
- get;
- }
- internal abstract DateTime MaxDate {
- get;
- }
-
- internal const int MaxCalendarMonth = 13;
- internal const int MaxCalendarDay = 30;
-
- internal int MinEraCalendarYear(int era)
- {
- EraInfo[] mEraInfo = CalEraInfo;
-
- if (mEraInfo == null) {
- return MinCalendarYear;
- }
-
- if (era == Calendar.CurrentEra) {
- era = CurrentEraValue;
- }
-
- if (era == GetEra(MinDate)) {
- return (GetYear(MinCalendarYear, MinDate));
- }
-
- for (int i = 0; i < mEraInfo.Length; i++) {
- if (era == mEraInfo[i].era) {
- return (mEraInfo[i].minEraYear);
- }
- }
- throw new ArgumentOutOfRangeException("era", Environment.GetResourceString("ArgumentOutOfRange_InvalidEraValue"));
- }
-
- internal int MaxEraCalendarYear(int era)
- {
- EraInfo[] mEraInfo = CalEraInfo;
-
- if (mEraInfo == null) {
- return MaxCalendarYear;
- }
-
- if (era == Calendar.CurrentEra) {
- era = CurrentEraValue;
- }
-
- if (era == GetEra(MaxDate)) {
- return (GetYear(MaxCalendarYear, MaxDate));
- }
-
- for (int i = 0; i < mEraInfo.Length; i++) {
- if (era == mEraInfo[i].era) {
- return (mEraInfo[i].maxEraYear);
- }
- }
- throw new ArgumentOutOfRangeException("era", Environment.GetResourceString("ArgumentOutOfRange_InvalidEraValue"));
- }
-
-
-
- internal EastAsianLunisolarCalendar()
- {
- }
-
- internal void CheckTicksRange(long ticks)
- {
- if (ticks < MinSupportedDateTime.Ticks || ticks > MaxSupportedDateTime.Ticks) {
- throw new ArgumentOutOfRangeException("time", String.Format(CultureInfo.InvariantCulture, Environment.GetResourceString("ArgumentOutOfRange_CalendarRange"), MinSupportedDateTime, MaxSupportedDateTime));
- }
- }
-
- internal void CheckEraRange(int era)
- {
- if (era == Calendar.CurrentEra) {
- era = CurrentEraValue;
- }
-
- if ((era < GetEra(MinDate)) || (era > GetEra(MaxDate))) {
- throw new ArgumentOutOfRangeException("era", Environment.GetResourceString("ArgumentOutOfRange_InvalidEraValue"));
- }
- }
-
- internal int CheckYearRange(int year, int era)
- {
- CheckEraRange(era);
- year = GetGregorianYear(year, era);
-
- if ((year < MinCalendarYear) || (year > MaxCalendarYear)) {
- throw new ArgumentOutOfRangeException("year", String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("ArgumentOutOfRange_Range"), MinEraCalendarYear(era), MaxEraCalendarYear(era)));
- }
- return year;
- }
-
- internal int CheckYearMonthRange(int year, int month, int era)
- {
- year = CheckYearRange(year, era);
-
- if (month == 13) {
-
- if (GetYearInfo(year, LeapMonth) == 0)
- throw new ArgumentOutOfRangeException("month", Environment.GetResourceString("ArgumentOutOfRange_Month"));
- }
-
- if (month < 1 || month > 13) {
- throw new ArgumentOutOfRangeException("month", Environment.GetResourceString("ArgumentOutOfRange_Month"));
- }
- return year;
- }
-
- internal int InternalGetDaysInMonth(int year, int month)
- {
- int nDays;
- int mask;
-
- mask = 32768;
-
- mask >>= (month - 1);
- if ((GetYearInfo(year, nDaysPerMonth) & mask) == 0)
- nDays = 29;
- else
- nDays = 30;
- return nDays;
- }
-
-
-
-
-
- public override int GetDaysInMonth(int year, int month, int era)
- {
- year = CheckYearMonthRange(year, month, era);
- return InternalGetDaysInMonth(year, month);
- }
-
- internal int GergIsleap(int y)
- {
- return ((((y) % 4) != 0) ? 0 : ((((y) % 100) != 0) ? 1 : ((((y) % 400) != 0) ? 0 : 1)));
- }
-
-
-
-
- public override DateTime ToDateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, int era)
- {
- year = CheckYearMonthRange(year, month, era);
- int daysInMonth = InternalGetDaysInMonth(year, month);
- if (day < 1 || day > daysInMonth) {
- BCLDebug.Log("year = " + year + ", month = " + month + ", day = " + day);
- throw new ArgumentOutOfRangeException("day", String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("ArgumentOutOfRange_Day"), daysInMonth, month));
- }
-
- int gy = 0;
- int gm = 0;
- int gd = 0;
-
- if (LunarToGregorian(year, month, day, ref gy, ref gm, ref gd)) {
- return new DateTime(gy, gm, gd, hour, minute, second, millisecond);
- }
- else {
- throw new ArgumentOutOfRangeException(null, Environment.GetResourceString("ArgumentOutOfRange_BadYearMonthDay"));
- }
- }
-
-
-
-
-
-
- internal void GregorianToLunar(int nSYear, int nSMonth, int nSDate, ref int nLYear, ref int nLMonth, ref int nLDate)
- {
-
- int nSolarDay;
-
- int nLunarDay;
-
- int fLeap;
-
- int LDpM;
-
- int mask;
-
- int nDays;
-
- int nJan1Month;
- int nJan1Date;
-
-
- fLeap = GergIsleap(nSYear);
- nSolarDay = (fLeap == 1) ? DaysToMonth366[nSMonth - 1] : DaysToMonth365[nSMonth - 1];
- nSolarDay += nSDate;
-
-
- nLunarDay = nSolarDay;
- nLYear = nSYear;
- if (nLYear == (MaxCalendarYear + 1)) {
- nLYear--;
- nLunarDay += ((GergIsleap(nLYear) == 1) ? 366 : 365);
- nJan1Month = GetYearInfo(nLYear, Jan1Month);
- nJan1Date = GetYearInfo(nLYear, Jan1Date);
- }
- else {
-
- nJan1Month = GetYearInfo(nLYear, Jan1Month);
- nJan1Date = GetYearInfo(nLYear, Jan1Date);
-
-
-
- if ((nSMonth < nJan1Month) || (nSMonth == nJan1Month && nSDate < nJan1Date)) {
-
-
- nLYear--;
-
-
- nLunarDay += ((GergIsleap(nLYear) == 1) ? 366 : 365);
-
-
- nJan1Month = GetYearInfo(nLYear, Jan1Month);
- nJan1Date = GetYearInfo(nLYear, Jan1Date);
- }
- }
-
-
-
-
-
-
- nLunarDay -= DaysToMonth365[nJan1Month - 1];
- nLunarDay -= (nJan1Date - 1);
-
-
- mask = 32768;
- LDpM = GetYearInfo(nLYear, nDaysPerMonth);
- nDays = ((LDpM & mask) != 0) ? 30 : 29;
- nLMonth = 1;
- while (nLunarDay > nDays) {
- nLunarDay -= nDays;
- nLMonth++;
- mask >>= 1;
- nDays = ((LDpM & mask) != 0) ? 30 : 29;
- }
- nLDate = nLunarDay;
- }
-
-
- internal bool LunarToGregorian(int nLYear, int nLMonth, int nLDate, ref int nSolarYear, ref int nSolarMonth, ref int nSolarDay)
- {
- int numLunarDays;
-
- if (nLDate < 1 || nLDate > 30)
- return false;
-
- numLunarDays = nLDate - 1;
-
-
- for (int i = 1; i < nLMonth; i++) {
- numLunarDays += InternalGetDaysInMonth(nLYear, i);
- }
-
-
- int nJan1Month = GetYearInfo(nLYear, Jan1Month);
- int nJan1Date = GetYearInfo(nLYear, Jan1Date);
-
-
- int fLeap = GergIsleap(nLYear);
- int[] days = (fLeap == 1) ? DaysToMonth366 : DaysToMonth365;
-
- nSolarDay = nJan1Date;
-
- if (nJan1Month > 1)
- nSolarDay += days[nJan1Month - 1];
-
-
- nSolarDay = nSolarDay + numLunarDays;
-
- if (nSolarDay > (fLeap + 365)) {
- nSolarYear = nLYear + 1;
- nSolarDay -= (fLeap + 365);
- }
- else {
- nSolarYear = nLYear;
- }
-
- for (nSolarMonth = 1; nSolarMonth < 12; nSolarMonth++) {
- if (days[nSolarMonth] >= nSolarDay)
- break;
- }
-
- nSolarDay -= days[nSolarMonth - 1];
- return true;
- }
-
- internal DateTime LunarToTime(DateTime time, int year, int month, int day)
- {
- int gy = 0;
- int gm = 0;
- int gd = 0;
- LunarToGregorian(year, month, day, ref gy, ref gm, ref gd);
- return (GregorianCalendar.GetDefaultInstance().ToDateTime(gy, gm, gd, time.Hour, time.Minute, time.Second, time.Millisecond));
- }
-
- internal void TimeToLunar(DateTime time, ref int year, ref int month, ref int day)
- {
- int gy = 0;
- int gm = 0;
- int gd = 0;
-
- Calendar Greg = GregorianCalendar.GetDefaultInstance();
- gy = Greg.GetYear(time);
- gm = Greg.GetMonth(time);
- gd = Greg.GetDayOfMonth(time);
-
- GregorianToLunar(gy, gm, gd, ref year, ref month, ref day);
- }
-
-
-
-
-
-
-
-
-
-
- public override DateTime AddMonths(DateTime time, int months)
- {
- if (months < -120000 || months > 120000) {
- throw new ArgumentOutOfRangeException("months", String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("ArgumentOutOfRange_Range"), -120000, 120000));
- }
-
- CheckTicksRange(time.Ticks);
-
- int y = 0;
- int m = 0;
- int d = 0;
- TimeToLunar(time, ref y, ref m, ref d);
-
- int i = m + months;
- if (i > 0) {
- int monthsInYear = InternalIsLeapYear(y) ? 13 : 12;
-
- while (i - monthsInYear > 0) {
- i -= monthsInYear;
- y++;
- monthsInYear = InternalIsLeapYear(y) ? 13 : 12;
- }
- m = i;
- }
- else {
- int monthsInYear;
- while (i <= 0) {
- monthsInYear = InternalIsLeapYear(y - 1) ? 13 : 12;
- i += monthsInYear;
- y--;
- }
- m = i;
- }
-
- int days = InternalGetDaysInMonth(y, m);
- if (d > days) {
- d = days;
- }
- DateTime dt = LunarToTime(time, y, m, d);
-
- CheckAddResult(dt.Ticks, MinSupportedDateTime, MaxSupportedDateTime);
- return (dt);
- }
-
-
- public override DateTime AddYears(DateTime time, int years)
- {
- CheckTicksRange(time.Ticks);
-
- int y = 0;
- int m = 0;
- int d = 0;
- TimeToLunar(time, ref y, ref m, ref d);
-
- y += years;
-
- if (m == 13 && !InternalIsLeapYear(y)) {
- m = 12;
- d = InternalGetDaysInMonth(y, m);
- }
- int DaysInMonths = InternalGetDaysInMonth(y, m);
- if (d > DaysInMonths) {
- d = DaysInMonths;
- }
-
- DateTime dt = LunarToTime(time, y, m, d);
- CheckAddResult(dt.Ticks, MinSupportedDateTime, MaxSupportedDateTime);
- return (dt);
- }
-
-
-
-
-
- public override int GetDayOfYear(DateTime time)
- {
- CheckTicksRange(time.Ticks);
-
- int y = 0;
- int m = 0;
- int d = 0;
- TimeToLunar(time, ref y, ref m, ref d);
-
- for (int i = 1; i < m; i++) {
- d = d + InternalGetDaysInMonth(y, i);
- }
- return d;
- }
-
-
-
-
-
- public override int GetDayOfMonth(DateTime time)
- {
- CheckTicksRange(time.Ticks);
-
- int y = 0;
- int m = 0;
- int d = 0;
- TimeToLunar(time, ref y, ref m, ref d);
-
- return d;
- }
-
-
-
-
- public override int GetDaysInYear(int year, int era)
- {
- year = CheckYearRange(year, era);
-
- int Days = 0;
- int monthsInYear = InternalIsLeapYear(year) ? 13 : 12;
-
- while (monthsInYear != 0)
- Days += InternalGetDaysInMonth(year, monthsInYear--);
-
- return Days;
- }
-
-
-
-
-
- public override int GetMonth(DateTime time)
- {
- CheckTicksRange(time.Ticks);
-
- int y = 0;
- int m = 0;
- int d = 0;
- TimeToLunar(time, ref y, ref m, ref d);
-
- return m;
- }
-
-
-
-
-
- public override int GetYear(DateTime time)
- {
- CheckTicksRange(time.Ticks);
-
- int y = 0;
- int m = 0;
- int d = 0;
- TimeToLunar(time, ref y, ref m, ref d);
-
- return GetYear(y, time);
- }
-
-
-
-
-
-
-
- public override DayOfWeek GetDayOfWeek(DateTime time)
- {
- CheckTicksRange(time.Ticks);
- return ((DayOfWeek)((int)(time.Ticks / Calendar.TicksPerDay + 1) % 7));
- }
-
-
-
- public override int GetMonthsInYear(int year, int era)
- {
- year = CheckYearRange(year, era);
- return (InternalIsLeapYear(year) ? 13 : 12);
- }
-
-
-
-
-
- public override bool IsLeapDay(int year, int month, int day, int era)
- {
- year = CheckYearMonthRange(year, month, era);
- int daysInMonth = InternalGetDaysInMonth(year, month);
-
- if (day < 1 || day > daysInMonth) {
- throw new ArgumentOutOfRangeException("day", String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("ArgumentOutOfRange_Day"), daysInMonth, month));
- }
- int m = GetYearInfo(year, LeapMonth);
- return ((m != 0) && (month == (m + 1)));
- }
-
-
-
-
-
- public override bool IsLeapMonth(int year, int month, int era)
- {
- year = CheckYearMonthRange(year, month, era);
- int m = GetYearInfo(year, LeapMonth);
- return ((m != 0) && (month == (m + 1)));
- }
-
-
-
-
-
- public override int GetLeapMonth(int year, int era)
- {
- year = CheckYearRange(year, era);
- int month = GetYearInfo(year, LeapMonth);
- if (month > 0) {
- return (month + 1);
- }
- return 0;
- }
-
- internal bool InternalIsLeapYear(int year)
- {
- return (GetYearInfo(year, LeapMonth) != 0);
- }
-
-
-
-
- public override bool IsLeapYear(int year, int era)
- {
- year = CheckYearRange(year, era);
- return InternalIsLeapYear(year);
- }
-
- private const int DEFAULT_GREGORIAN_TWO_DIGIT_YEAR_MAX = 2029;
-
-
- public override int TwoDigitYearMax {
- get {
- if (twoDigitYearMax == -1) {
- twoDigitYearMax = GetSystemTwoDigitYearSetting(BaseCalendarID, GetYear(new DateTime(DEFAULT_GREGORIAN_TWO_DIGIT_YEAR_MAX, 1, 1)));
- }
- return (twoDigitYearMax);
- }
-
- set {
- VerifyWritable();
- if (value < 99 || value > MaxCalendarYear) {
- throw new ArgumentOutOfRangeException("value", String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("ArgumentOutOfRange_Range"), 99, MaxCalendarYear));
- }
- twoDigitYearMax = value;
- }
- }
-
-
- public override int ToFourDigitYear(int year)
- {
-
- year = base.ToFourDigitYear(year);
- CheckYearRange(year, CurrentEra);
- return (year);
- }
-
- }
- }