The Labs \ Source Viewer \ SSCLI \ System.Globalization \ ThaiBuddhistCalendar

  1. // ==++==
  2. //
  3. //
  4. // Copyright (c) 2006 Microsoft Corporation. All rights reserved.
  5. //
  6. // The use and distribution terms for this software are contained in the file
  7. // named license.txt, which can be found in the root of this distribution.
  8. // By using this software in any fashion, you are agreeing to be bound by the
  9. // terms of this license.
  10. //
  11. // You must not remove this notice, or any other, from this software.
  12. //
  13. //
  14. // ==--==
  15. namespace System.Globalization
  16. {
  17.    
  18.     using System;
  19.    
  20. /*=================================ThaiBuddhistCalendar==========================
  21.     **
  22.     ** ThaiBuddhistCalendar is based on Gregorian calendar.  Its year value has
  23.     ** an offset to the Gregorain calendar.
  24.     **
  25.     **  Calendar support range:
  26.     **      Calendar    Minimum    Maximum
  27.     **      ==========  ==========  ==========
  28.     **      Gregorian  0001/01/01  9999/12/31
  29.     **      Thai        0544/01/01  10542/12/31
  30.     ============================================================================*/   
  31.    
  32.    
  33.     [System.Runtime.InteropServices.ComVisible(true)]
  34.     [Serializable()]
  35.     public class ThaiBuddhistCalendar : Calendar
  36.     {
  37.        
  38.         static internal EraInfo[] m_EraInfo;
  39.         //
  40.         // The era value for the current era.
  41.         //
  42.        
  43.         public const int ThaiBuddhistEra = 1;
  44.        
  45.         //internal static Calendar m_defaultInstance;
  46.        
  47.         internal GregorianCalendarHelper helper;
  48.        
  49.        
  50.         [System.Runtime.InteropServices.ComVisible(false)]
  51.         public override DateTime MinSupportedDateTime {
  52.             get { return (DateTime.MinValue); }
  53.         }
  54.        
  55.         [System.Runtime.InteropServices.ComVisible(false)]
  56.         public override DateTime MaxSupportedDateTime {
  57.             get { return (DateTime.MaxValue); }
  58.         }
  59.        
  60.         // Return the type of the Thai Buddhist calendar.
  61.         //
  62.        
  63.         [System.Runtime.InteropServices.ComVisible(false)]
  64.         public override CalendarAlgorithmType AlgorithmType {
  65.             get { return CalendarAlgorithmType.SolarCalendar; }
  66.         }
  67.        
  68. /*=================================GetDefaultInstance==========================
  69.         **Action: Internal method to provide a default intance of ThaiBuddhistCalendar.  Used by NLS+ implementation
  70.         **      and other calendars.
  71.         **Returns:
  72.         **Arguments:
  73.         **Exceptions:
  74.         ============================================================================*/       
  75. /*
  76.         internal static Calendar GetDefaultInstance() {
  77.             if (m_defaultInstance == null) {
  78.                 m_defaultInstance = new ThaiBuddhistCalendar();
  79.             }
  80.             return (m_defaultInstance);
  81.         }
  82.         */       
  83.        
  84.         static ThaiBuddhistCalendar()
  85.         {
  86.             // Since
  87.             // Gregorian Year = Era Year + yearOffset
  88.             // When Gregorian Year 1 is Thai Buddhist year 544, so that
  89.             // 1 = 544 + yearOffset
  90.             // So yearOffset = -543
  91.             // Gregorian Year 2001 is Thai Buddhist Year 2544.
  92.             //m_EraInfo[0] = new EraInfo(1, new DateTime(1, 1, 1).Ticks, -543, 544, GregorianCalendar.MaxYear + 543);
  93.             m_EraInfo = GregorianCalendarHelper.InitEraInfo(Calendar.CAL_THAI);
  94.         }
  95.        
  96.        
  97.         public ThaiBuddhistCalendar()
  98.         {
  99.             helper = new GregorianCalendarHelper(this, m_EraInfo);
  100.         }
  101.        
  102.         internal override int ID {
  103.             get { return (CAL_THAI); }
  104.         }
  105.        
  106.        
  107.         public override DateTime AddMonths(DateTime time, int months)
  108.         {
  109.             return (helper.AddMonths(time, months));
  110.         }
  111.        
  112.        
  113.         public override DateTime AddYears(DateTime time, int years)
  114.         {
  115.             return (helper.AddYears(time, years));
  116.         }
  117.        
  118.        
  119.         public override int GetDaysInMonth(int year, int month, int era)
  120.         {
  121.             return (helper.GetDaysInMonth(year, month, era));
  122.         }
  123.        
  124.        
  125.         public override int GetDaysInYear(int year, int era)
  126.         {
  127.             return (helper.GetDaysInYear(year, era));
  128.         }
  129.        
  130.        
  131.         public override int GetDayOfMonth(DateTime time)
  132.         {
  133.             return (helper.GetDayOfMonth(time));
  134.         }
  135.        
  136.        
  137.         public override DayOfWeek GetDayOfWeek(DateTime time)
  138.         {
  139.             return (helper.GetDayOfWeek(time));
  140.         }
  141.        
  142.        
  143.         public override int GetDayOfYear(DateTime time)
  144.         {
  145.             return (helper.GetDayOfYear(time));
  146.         }
  147.        
  148.        
  149.         public override int GetMonthsInYear(int year, int era)
  150.         {
  151.             return (helper.GetMonthsInYear(year, era));
  152.         }
  153.        
  154.        
  155.         [System.Runtime.InteropServices.ComVisible(false)]
  156.         public override int GetWeekOfYear(DateTime time, CalendarWeekRule rule, DayOfWeek firstDayOfWeek)
  157.         {
  158.             return (helper.GetWeekOfYear(time, rule, firstDayOfWeek));
  159.         }
  160.        
  161.        
  162.         public override int GetEra(DateTime time)
  163.         {
  164.             return (helper.GetEra(time));
  165.         }
  166.        
  167.         public override int GetMonth(DateTime time)
  168.         {
  169.             return (helper.GetMonth(time));
  170.         }
  171.        
  172.        
  173.         public override int GetYear(DateTime time)
  174.         {
  175.             return (helper.GetYear(time));
  176.         }
  177.        
  178.        
  179.         public override bool IsLeapDay(int year, int month, int day, int era)
  180.         {
  181.             return (helper.IsLeapDay(year, month, day, era));
  182.         }
  183.        
  184.        
  185.         public override bool IsLeapYear(int year, int era)
  186.         {
  187.             return (helper.IsLeapYear(year, era));
  188.         }
  189.        
  190.         // Returns the leap month in a calendar year of the specified era. This method returns 0
  191.         // if this calendar does not have leap month, or this year is not a leap year.
  192.         //
  193.        
  194.         [System.Runtime.InteropServices.ComVisible(false)]
  195.         public override int GetLeapMonth(int year, int era)
  196.         {
  197.             return (helper.GetLeapMonth(year, era));
  198.         }
  199.        
  200.        
  201.         public override bool IsLeapMonth(int year, int month, int era)
  202.         {
  203.             return (helper.IsLeapMonth(year, month, era));
  204.         }
  205.        
  206.        
  207.         public override DateTime ToDateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, int era)
  208.         {
  209.             return (helper.ToDateTime(year, month, day, hour, minute, second, millisecond, era));
  210.         }
  211.        
  212.        
  213.         public override int[] Eras {
  214.             get { return (helper.Eras); }
  215.         }
  216.        
  217.         private const int DEFAULT_TWO_DIGIT_YEAR_MAX = 2572;
  218.        
  219.        
  220.         public override int TwoDigitYearMax {
  221.             get {
  222.                 if (twoDigitYearMax == -1) {
  223.                     twoDigitYearMax = GetSystemTwoDigitYearSetting(ID, DEFAULT_TWO_DIGIT_YEAR_MAX);
  224.                 }
  225.                 return (twoDigitYearMax);
  226.             }
  227.            
  228.             set {
  229.                 VerifyWritable();
  230.                 if (value < 99 || value > helper.MaxYear) {
  231.                     throw new ArgumentOutOfRangeException("year", String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("ArgumentOutOfRange_Range"), 99, helper.MaxYear));
  232.                    
  233.                 }
  234.                 twoDigitYearMax = value;
  235.             }
  236.         }
  237.        
  238.        
  239.         public override int ToFourDigitYear(int year)
  240.         {
  241.             return (helper.ToFourDigitYear(year, this.TwoDigitYearMax));
  242.         }
  243.     }
  244. }

Developer Fusion