TaiwanLunisolarCalendar.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / ndp / clr / src / BCL / System / Globalization / TaiwanLunisolarCalendar.cs / 1 / TaiwanLunisolarCalendar.cs

                            // ==++== 
//
//   Copyright (c) Microsoft Corporation.  All rights reserved.
//
// ==--== 
namespace System.Globalization {
    using System; 
 
    ////////////////////////////////////////////////////////////////////////////
    // 
    //  Notes about ----LunisolarCalendar
    //
    ////////////////////////////////////////////////////////////////////////////
     /* 
     **  Calendar support range:
     **      Calendar            Minimum           Maximum 
     **      ==========     ==========  ========== 
     **      Gregorian           1912/02/18        2051/02/10
     **      ----Lunisolar     1912/01/01       2050/13/29 
     */

    [Serializable]
    public class ----LunisolarCalendar : EastAsianLunisolarCalendar { 

        // Since 
        //    Gregorian Year = Era Year + yearOffset 
        // When Gregorian Year 1912 is year 1, so that
        //    1912 = 1 + yearOffset 
        //  So yearOffset = 1911
        //m_EraInfo[0] = new EraInfo(1, new DateTime(1912, 1, 1).Ticks, 1911, 1, GregorianCalendar.MaxYear - 1911);
        internal static EraInfo[] m_EraInfo = GregorianCalendarHelper.InitEraInfo(Calendar.CAL_TAIWAN);
 
        //internal static Calendar m_defaultInstance;
        internal GregorianCalendarHelper helper; 
 
        internal const int MIN_LUNISOLAR_YEAR = 1912;
        internal const int MAX_LUNISOLAR_YEAR = 2050; 

        internal const int MIN_GREGORIAN_YEAR = 1912;
        internal const int MIN_GREGORIAN_MONTH = 2;
        internal const int MIN_GREGORIAN_DAY = 18; 

        internal const int MAX_GREGORIAN_YEAR = 2051; 
        internal const int MAX_GREGORIAN_MONTH = 2; 
        internal const int MAX_GREGORIAN_DAY = 10;
 
        internal static DateTime minDate = new DateTime(MIN_GREGORIAN_YEAR, MIN_GREGORIAN_MONTH, MIN_GREGORIAN_DAY);
        internal static DateTime maxDate = new DateTime((new DateTime(MAX_GREGORIAN_YEAR, MAX_GREGORIAN_MONTH, MAX_GREGORIAN_DAY, 23, 59, 59, 999)).Ticks + 9999);

        public override DateTime MinSupportedDateTime { 
            get
            { 
                return (minDate); 
            }
        } 



        public override DateTime MaxSupportedDateTime { 
            get
            { 
                return (maxDate); 
            }
        } 

        static readonly int  [,] yinfo =
        {
/*Y         LM    Lmon  Lday     DaysPerMonth   D1 D2 D3 D4 D5 D6 D7 D8 D9 D10   D11   D12   D13   #Days 
1912  */{   0  ,  2  ,  18 ,  42192 },/*  30 29 30 29 29 30 29 29 30 30 29 30 0  354
1913  */{   0  ,  2  ,  6  ,  53840 },/*  30 30 29 30 29 29 30 29 29 30 29 30 0  354 
1914  */{   5  ,  1  ,  26 ,  54568 },/*  30 30 29 30 29 30 29 30 29 29 30 29 30 384 
1915  */{   0  ,  2  ,  14 ,  46400 },/*  30 29 30 30 29 30 29 30 29 30 29 29 0  354
1916  */{   0  ,  2  ,  3  ,  54944 },/*  30 30 29 30 29 30 30 29 30 29 30 29 0  355 
1917  */{   2  ,  1  ,  23 ,  38608 },/*  30 29 29 30 29 30 30 29 30 30 29 30 29 384
1918  */{   0  ,  2  ,  11 ,  38320 },/*  30 29 29 30 29 30 29 30 30 29 30 30 0  355
1919  */{   7  ,  2  ,  1  ,  18872 },/*  29 30 29 29 30 29 29 30 30 29 30 30 30 384
1920  */{   0  ,  2  ,  20 ,  18800 },/*  29 30 29 29 30 29 29 30 29 30 30 30 0  354 
1921  */{   0  ,  2  ,  8  ,  42160 },/*  30 29 30 29 29 30 29 29 30 29 30 30 0  354
1922  */{   5  ,  1  ,  28 ,  45656 },/*  30 29 30 30 29 29 30 29 29 30 29 30 30 384 
1923  */{   0  ,  2  ,  16 ,  27216 },/*  29 30 30 29 30 29 30 29 29 30 29 30 0  354 
1924  */{   0  ,  2  ,  5  ,  27968 },/*  29 30 30 29 30 30 29 30 29 30 29 29 0  354
1925  */{   4  ,  1  ,  24 ,  44456 },/*  30 29 30 29 30 30 29 30 30 29 30 29 30 385 
1926  */{   0  ,  2  ,  13 ,  11104 },/*  29 29 30 29 30 29 30 30 29 30 30 29 0  354
1927  */{   0  ,  2  ,  2  ,  38256 },/*  30 29 29 30 29 30 29 30 29 30 30 30 0  355
1928  */{   2  ,  1  ,  23 ,  18808 },/*  29 30 29 29 30 29 29 30 29 30 30 30 30 384
1929  */{   0  ,  2  ,  10 ,  18800 },/*  29 30 29 29 30 29 29 30 29 30 30 30 0  354 
1930  */{   6  ,  1  ,  30 ,  25776 },/*  29 30 30 29 29 30 29 29 30 29 30 30 29 383
1931  */{   0  ,  2  ,  17 ,  54432 },/*  30 30 29 30 29 30 29 29 30 29 30 29 0  354 
1932  */{   0  ,  2  ,  6  ,  59984 },/*  30 30 30 29 30 29 30 29 29 30 29 30 0  355 
1933  */{   5  ,  1  ,  26 ,  27976 },/*  29 30 30 29 30 30 29 30 29 30 29 29 30 384
1934  */{   0  ,  2  ,  14 ,  23248 },/*  29 30 29 30 30 29 30 29 30 30 29 30 0  355 
1935  */{   0  ,  2  ,  4  ,  11104 },/*  29 29 30 29 30 29 30 30 29 30 30 29 0  354
1936  */{   3  ,  1  ,  24 ,  37744 },/*  30 29 29 30 29 29 30 30 29 30 30 30 29 384
1937  */{   0  ,  2  ,  11 ,  37600 },/*  30 29 29 30 29 29 30 29 30 30 30 29 0  354
1938  */{   7  ,  1  ,  31 ,  51560 },/*  30 30 29 29 30 29 29 30 29 30 30 29 30 384 
1939  */{   0  ,  2  ,  19 ,  51536 },/*  30 30 29 29 30 29 29 30 29 30 29 30 0  354
1940  */{   0  ,  2  ,  8  ,  54432 },/*  30 30 29 30 29 30 29 29 30 29 30 29 0  354 
1941  */{   6  ,  1  ,  27 ,  55888 },/*  30 30 29 30 30 29 30 29 29 30 29 30 29 384 
1942  */{   0  ,  2  ,  15 ,  46416 },/*  30 29 30 30 29 30 29 30 29 30 29 30 0  355
1943  */{   0  ,  2  ,  5  ,  22176 },/*  29 30 29 30 29 30 30 29 30 29 30 29 0  354 
1944  */{   4  ,  1  ,  25 ,  43736 },/*  30 29 30 29 30 29 30 29 30 30 29 30 30 385
1945  */{   0  ,  2  ,  13 ,  9680  },/*  29 29 30 29 29 30 29 30 30 30 29 30 0  354
1946  */{   0  ,  2  ,  2  ,  37584 },/*  30 29 29 30 29 29 30 29 30 30 29 30 0  354
1947  */{   2  ,  1  ,  22 ,  51544 },/*  30 30 29 29 30 29 29 30 29 30 29 30 30 384 
1948  */{   0  ,  2  ,  10 ,  43344 },/*  30 29 30 29 30 29 29 30 29 30 29 30 0  354
1949  */{   7  ,  1  ,  29 ,  46248 },/*  30 29 30 30 29 30 29 29 30 29 30 29 30 384 
1950  */{   0  ,  2  ,  17 ,  27808 },/*  29 30 30 29 30 30 29 29 30 29 30 29 0  354 
1951  */{   0  ,  2  ,  6  ,  46416 },/*  30 29 30 30 29 30 29 30 29 30 29 30 0  355
1952  */{   5  ,  1  ,  27 ,  21928 },/*  29 30 29 30 29 30 29 30 30 29 30 29 30 384 
1953  */{   0  ,  2  ,  14 ,  19872 },/*  29 30 29 29 30 30 29 30 30 29 30 29 0  354
1954  */{   0  ,  2  ,  3  ,  42416 },/*  30 29 30 29 29 30 29 30 30 29 30 30 0  355
1955  */{   3  ,  1  ,  24 ,  21176 },/*  29 30 29 30 29 29 30 29 30 29 30 30 30 384
1956  */{   0  ,  2  ,  12 ,  21168 },/*  29 30 29 30 29 29 30 29 30 29 30 30 0  354 
1957  */{   8  ,  1  ,  31 ,  43344 },/*  30 29 30 29 30 29 29 30 29 30 29 30 29 383
1958  */{   0  ,  2  ,  18 ,  59728 },/*  30 30 30 29 30 29 29 30 29 30 29 30 0  355 
1959  */{   0  ,  2  ,  8  ,  27296 },/*  29 30 30 29 30 29 30 29 30 29 30 29 0  354 
1960  */{   6  ,  1  ,  28 ,  44368 },/*  30 29 30 29 30 30 29 30 29 30 29 30 29 384
1961  */{   0  ,  2  ,  15 ,  43856 },/*  30 29 30 29 30 29 30 30 29 30 29 30 0  355 
1962  */{   0  ,  2  ,  5  ,  19296 },/*  29 30 29 29 30 29 30 30 29 30 30 29 0  354
1963  */{   4  ,  1  ,  25 ,  42352 },/*  30 29 30 29 29 30 29 30 29 30 30 30 29 384
1964  */{   0  ,  2  ,  13 ,  42352 },/*  30 29 30 29 29 30 29 30 29 30 30 30 0  355
1965  */{   0  ,  2  ,  2  ,  21088 },/*  29 30 29 30 29 29 30 29 29 30 30 29 0  353 
1966  */{   3  ,  1  ,  21 ,  59696 },/*  30 30 30 29 30 29 29 30 29 29 30 30 29 384
1967  */{   0  ,  2  ,  9  ,  55632 },/*  30 30 29 30 30 29 29 30 29 30 29 30 0  355 
1968  */{   7  ,  1  ,  30 ,  23208 },/*  29 30 29 30 30 29 30 29 30 29 30 29 30 384 
1969  */{   0  ,  2  ,  17 ,  22176 },/*  29 30 29 30 29 30 30 29 30 29 30 29 0  354
1970  */{   0  ,  2  ,  6  ,  38608 },/*  30 29 29 30 29 30 30 29 30 30 29 30 0  355 
1971  */{   5  ,  1  ,  27 ,  19176 },/*  29 30 29 29 30 29 30 29 30 30 30 29 30 384
1972  */{   0  ,  2  ,  15 ,  19152 },/*  29 30 29 29 30 29 30 29 30 30 29 30 0  354
1973  */{   0  ,  2  ,  3  ,  42192 },/*  30 29 30 29 29 30 29 29 30 30 29 30 0  354
1974  */{   4  ,  1  ,  23 ,  53864 },/*  30 30 29 30 29 29 30 29 29 30 30 29 30 384 
1975  */{   0  ,  2  ,  11 ,  53840 },/*  30 30 29 30 29 29 30 29 29 30 29 30 0  354
1976  */{   8  ,  1  ,  31 ,  54568 },/*  30 30 29 30 29 30 29 30 29 29 30 29 30 384 
1977  */{   0  ,  2  ,  18 ,  46400 },/*  30 29 30 30 29 30 29 30 29 30 29 29 0  354 
1978  */{   0  ,  2  ,  7  ,  46752 },/*  30 29 30 30 29 30 30 29 30 29 30 29 0  355
1979  */{   6  ,  1  ,  28 ,  38608 },/*  30 29 29 30 29 30 30 29 30 30 29 30 29 384 
1980  */{   0  ,  2  ,  16 ,  38320 },/*  30 29 29 30 29 30 29 30 30 29 30 30 0  355
1981  */{   0  ,  2  ,  5  ,  18864 },/*  29 30 29 29 30 29 29 30 30 29 30 30 0  354
1982  */{   4  ,  1  ,  25 ,  42168 },/*  30 29 30 29 29 30 29 29 30 29 30 30 30 384
1983  */{   0  ,  2  ,  13 ,  42160 },/*  30 29 30 29 29 30 29 29 30 29 30 30 0  354 
1984  */{   10 ,  2  ,  2  ,  45656 },/*  30 29 30 30 29 29 30 29 29 30 29 30 30 384
1985  */{   0  ,  2  ,  20 ,  27216 },/*  29 30 30 29 30 29 30 29 29 30 29 30 0  354 
1986  */{   0  ,  2  ,  9  ,  27968 },/*  29 30 30 29 30 30 29 30 29 30 29 29 0  354 
1987  */{   6  ,  1  ,  29 ,  44448 },/*  30 29 30 29 30 30 29 30 30 29 30 29 29 384
1988  */{   0  ,  2  ,  17 ,  43872 },/*  30 29 30 29 30 29 30 30 29 30 30 29 0  355 
1989  */{   0  ,  2  ,  6  ,  38256 },/*  30 29 29 30 29 30 29 30 29 30 30 30 0  355
1990  */{   5  ,  1  ,  27 ,  18808 },/*  29 30 29 29 30 29 29 30 29 30 30 30 30 384
1991  */{   0  ,  2  ,  15 ,  18800 },/*  29 30 29 29 30 29 29 30 29 30 30 30 0  354
1992  */{   0  ,  2  ,  4  ,  25776 },/*  29 30 30 29 29 30 29 29 30 29 30 30 0  354 
1993  */{   3  ,  1  ,  23 ,  27216 },/*  29 30 30 29 30 29 30 29 29 30 29 30 29 383
1994  */{   0  ,  2  ,  10 ,  59984 },/*  30 30 30 29 30 29 30 29 29 30 29 30 0  355 
1995  */{   8  ,  1  ,  31 ,  27432 },/*  29 30 30 29 30 29 30 30 29 29 30 29 30 384 
1996  */{   0  ,  2  ,  19 ,  23232 },/*  29 30 29 30 30 29 30 29 30 30 29 29 0  354
1997  */{   0  ,  2  ,  7  ,  43872 },/*  30 29 30 29 30 29 30 30 29 30 30 29 0  355 
1998  */{   5  ,  1  ,  28 ,  37736 },/*  30 29 29 30 29 29 30 30 29 30 30 29 30 384
1999  */{   0  ,  2  ,  16 ,  37600 },/*  30 29 29 30 29 29 30 29 30 30 30 29 0  354
2000  */{   0  ,  2  ,  5  ,  51552 },/*  30 30 29 29 30 29 29 30 29 30 30 29 0  354
2001  */{   4  ,  1  ,  24 ,  54440 },/*  30 30 29 30 29 30 29 29 30 29 30 29 30 384 
2002  */{   0  ,  2  ,  12 ,  54432 },/*  30 30 29 30 29 30 29 29 30 29 30 29 0  354
2003  */{   0  ,  2  ,  1  ,  55888 },/*  30 30 29 30 30 29 30 29 29 30 29 30 0  355 
2004  */{   2  ,  1  ,  22 ,  23208 },/*  29 30 29 30 30 29 30 29 30 29 30 29 30 384 
2005  */{   0  ,  2  ,  9  ,  22176 },/*  29 30 29 30 29 30 30 29 30 29 30 29 0  354
2006  */{   7  ,  1  ,  29 ,  43736 },/*  30 29 30 29 30 29 30 29 30 30 29 30 30 385 
2007  */{   0  ,  2  ,  18 ,  9680  },/*  29 29 30 29 29 30 29 30 30 30 29 30 0  354
2008  */{   0  ,  2  ,  7  ,  37584 },/*  30 29 29 30 29 29 30 29 30 30 29 30 0  354
2009  */{   5  ,  1  ,  26 ,  51544 },/*  30 30 29 29 30 29 29 30 29 30 29 30 30 384
2010  */{   0  ,  2  ,  14 ,  43344 },/*  30 29 30 29 30 29 29 30 29 30 29 30 0  354 
2011  */{   0  ,  2  ,  3  ,  46240 },/*  30 29 30 30 29 30 29 29 30 29 30 29 0  354
2012  */{   4  ,  1  ,  23 ,  46416 },/*  30 29 30 30 29 30 29 30 29 30 29 30 29 384 
2013  */{   0  ,  2  ,  10 ,  44368 },/*  30 29 30 29 30 30 29 30 29 30 29 30 0  355 
2014  */{   9  ,  1  ,  31 ,  21928 },/*  29 30 29 30 29 30 29 30 30 29 30 29 30 384
2015  */{   0  ,  2  ,  19 ,  19360 },/*  29 30 29 29 30 29 30 30 30 29 30 29 0  354 
2016  */{   0  ,  2  ,  8  ,  42416 },/*  30 29 30 29 29 30 29 30 30 29 30 30 0  355
2017  */{   6  ,  1  ,  28 ,  21176 },/*  29 30 29 30 29 29 30 29 30 29 30 30 30 384
2018  */{   0  ,  2  ,  16 ,  21168 },/*  29 30 29 30 29 29 30 29 30 29 30 30 0  354
2019  */{   0  ,  2  ,  5  ,  43312 },/*  30 29 30 29 30 29 29 30 29 29 30 30 0  354 
2020  */{   4  ,  1  ,  25 ,  29864 },/*  29 30 30 30 29 30 29 29 30 29 30 29 30 384
2021  */{   0  ,  2  ,  12 ,  27296 },/*  29 30 30 29 30 29 30 29 30 29 30 29 0  354 
2022  */{   0  ,  2  ,  1  ,  44368 },/*  30 29 30 29 30 30 29 30 29 30 29 30 0  355 
2023  */{   2  ,  1  ,  22 ,  19880 },/*  29 30 29 29 30 30 29 30 30 29 30 29 30 384
2024  */{   0  ,  2  ,  10 ,  19296 },/*  29 30 29 29 30 29 30 30 29 30 30 29 0  354 
2025  */{   6  ,  1  ,  29 ,  42352 },/*  30 29 30 29 29 30 29 30 29 30 30 30 29 384
2026  */{   0  ,  2  ,  17 ,  42208 },/*  30 29 30 29 29 30 29 29 30 30 30 29 0  354
2027  */{   0  ,  2  ,  6  ,  53856 },/*  30 30 29 30 29 29 30 29 29 30 30 29 0  354
2028  */{   5  ,  1  ,  26 ,  59696 },/*  30 30 30 29 30 29 29 30 29 29 30 30 29 384 
2029  */{   0  ,  2  ,  13 ,  54576 },/*  30 30 29 30 29 30 29 30 29 29 30 30 0  355
2030  */{   0  ,  2  ,  3  ,  23200 },/*  29 30 29 30 30 29 30 29 30 29 30 29 0  354 
2031  */{   3  ,  1  ,  23 ,  27472 },/*  29 30 30 29 30 29 30 30 29 30 29 30 29 384 
2032  */{   0  ,  2  ,  11 ,  38608 },/*  30 29 29 30 29 30 30 29 30 30 29 30 0  355
2033  */{   11 ,  1  ,  31 ,  19176 },/*  29 30 29 29 30 29 30 29 30 30 30 29 30 384 
2034  */{   0  ,  2  ,  19 ,  19152 },/*  29 30 29 29 30 29 30 29 30 30 29 30 0  354
2035  */{   0  ,  2  ,  8  ,  42192 },/*  30 29 30 29 29 30 29 29 30 30 29 30 0  354
2036  */{   6  ,  1  ,  28 ,  53848 },/*  30 30 29 30 29 29 30 29 29 30 29 30 30 384
2037  */{   0  ,  2  ,  15 ,  53840 },/*  30 30 29 30 29 29 30 29 29 30 29 30 0  354 
2038  */{   0  ,  2  ,  4  ,  54560 },/*  30 30 29 30 29 30 29 30 29 29 30 29 0  354
2039  */{   5  ,  1  ,  24 ,  55968 },/*  30 30 29 30 30 29 30 29 30 29 30 29 29 384 
2040  */{   0  ,  2  ,  12 ,  46496 },/*  30 29 30 30 29 30 29 30 30 29 30 29 0  355 
2041  */{   0  ,  2  ,  1  ,  22224 },/*  29 30 29 30 29 30 30 29 30 30 29 30 0  355
2042  */{   2  ,  1  ,  22 ,  19160 },/*  29 30 29 29 30 29 30 29 30 30 29 30 30 384 
2043  */{   0  ,  2  ,  10 ,  18864 },/*  29 30 29 29 30 29 29 30 30 29 30 30 0  354
2044  */{   7  ,  1  ,  30 ,  42168 },/*  30 29 30 29 29 30 29 29 30 29 30 30 30 384
2045  */{   0  ,  2  ,  17 ,  42160 },/*  30 29 30 29 29 30 29 29 30 29 30 30 0  354
2046  */{   0  ,  2  ,  6  ,  43600 },/*  30 29 30 29 30 29 30 29 29 30 29 30 0  354 
2047  */{   5  ,  1  ,  26 ,  46376 },/*  30 29 30 30 29 30 29 30 29 29 30 29 30 384
2048  */{   0  ,  2  ,  14 ,  27936 },/*  29 30 30 29 30 30 29 30 29 29 30 29 0  354 
2049  */{   0  ,  2  ,  2  ,  44448 },/*  30 29 30 29 30 30 29 30 30 29 30 29 0  355 
2050  */{   3  ,  1  ,  23 ,  21936 },/*  29 30 29 30 29 30 29 30 30 29 30 30 29 384
        */}; 


        internal override int MinCalendarYear {
            get 
            {
                return (MIN_LUNISOLAR_YEAR); 
            } 
        }
 
        internal override int MaxCalendarYear {
            get
            {
                return (MAX_LUNISOLAR_YEAR); 
            }
        } 
 
        internal override DateTime MinDate {
            get 
            {
                return (minDate);
            }
        } 

        internal override DateTime MaxDate { 
            get 
            {
                return (maxDate); 
            }
        }

        internal override EraInfo[] CalEraInfo { 
            get
            { 
                return (m_EraInfo); 
            }
        } 

        internal override int  GetYearInfo(int LunarYear, int Index) {
            if ((LunarYear < MIN_LUNISOLAR_YEAR) || (LunarYear > MAX_LUNISOLAR_YEAR)) {
                throw new ArgumentOutOfRangeException( 
                            "year",
                            String.Format( 
                                CultureInfo.CurrentCulture, 
                                Environment.GetResourceString("ArgumentOutOfRange_Range"),
                                MIN_LUNISOLAR_YEAR, 
                                MAX_LUNISOLAR_YEAR ));
            }

            return yinfo[LunarYear - MIN_LUNISOLAR_YEAR, Index]; 
        }
 
        internal override int GetYear(int year, DateTime time) { 
            return helper.GetYear(year, time);
        } 

        internal override int GetGregorianYear(int year, int era) {
            return helper.GetGregorianYear(year, era);
        } 

        /*=================================GetDefaultInstance========================== 
        **Action: Internal method to provide a default intance of ----LunisolarCalendar.  Used by NLS+ implementation 
        **       and other calendars.
        **Returns: 
        **Arguments:
        **Exceptions:
        ============================================================================*/
        /* 
        internal static Calendar GetDefaultInstance()
        { 
            if (m_defaultInstance == null) { 
                m_defaultInstance = new ----LunisolarCalendar();
            } 
            return (m_defaultInstance);
        }
        */
 
        // Construct an instance of ----Lunisolar calendar.
 
        public ----LunisolarCalendar() { 
            helper = new GregorianCalendarHelper(this, m_EraInfo);
        } 



        public override int GetEra(DateTime time) { 
            return (helper.GetEra(time));
        } 
 
        internal override int BaseCalendarID {
            get { 
                return (CAL_TAIWAN);
            }
        }
 
        internal override int ID {
            get { 
                return (CAL_----LUNISOLAR); 
            }
        } 



        public override int[] Eras { 
            get {
                return (helper.Eras); 
            } 
        }
    } 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK