Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
AlgorithmType Property

PersianCalendar.AlgorithmType Property

Gets a value indicating whether the current calendar is solar-based, lunar-based, or lunisolar-based.

Namespace:  System.Globalization
Assembly:  mscorlib (in mscorlib.dll)

public override CalendarAlgorithmType AlgorithmType { get; }

A date calculation for a particular calendar depends on whether the calendar is solar-based, lunar-based, or lunisolar-based.

The following example uses reflection to instantiate each Calendar type found in the .NET Framework and displays the value of its AlgorithmType property.

using System;
using System.Collections;
using System.Globalization;
using System.Reflection;

public class Example
   public static void Main()
      Assembly assem = Assembly.GetAssembly(typeof(Calendar));
      Type[] types = assem.GetExportedTypes();
      Type[] calendars = Array.FindAll(types, IsValidCalendar);
      Array.Sort(calendars, new CalendarComparer());

      Console.WriteLine("{0,-30} {1}\n", "Calendar", "Algorithm Type");
      foreach (var cal in calendars) {
         // Instantiate a calendar object.
         ConstructorInfo ctor = cal.GetConstructor( new Type[] {} );
         Calendar calObj = (Calendar) ctor.Invoke( new Type[] {} ); 

         Console.WriteLine("{0,-30} {1}", 
                          cal.ToString().Replace("System.Globalization.", ""),
                                           BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty,
                                           null, calObj, null));

   private static bool IsValidCalendar(Type t)
        if (t.IsSubclassOf(typeof(Calendar)))
            if (t.IsAbstract)
                return false;
                return true;
            return false;

public class CalendarComparer : IComparer
   public int Compare(object x, object y)
      Type tX = (Type) x;
      Type tY = (Type) y;

      return tX.Name.CompareTo(tY.Name);
// The example displays the following output: 
//       Calendar                       Algorithm Type 
//       ChineseLunisolarCalendar       LunisolarCalendar 
//       GregorianCalendar              SolarCalendar 
//       HebrewCalendar                 LunisolarCalendar 
//       HijriCalendar                  LunarCalendar 
//       JapaneseCalendar               SolarCalendar 
//       JapaneseLunisolarCalendar      LunisolarCalendar 
//       JulianCalendar                 SolarCalendar 
//       KoreanCalendar                 SolarCalendar 
//       KoreanLunisolarCalendar        LunisolarCalendar 
//       PersianCalendar                SolarCalendar 
//       TaiwanCalendar                 SolarCalendar 
//       TaiwanLunisolarCalendar        LunisolarCalendar 
//       ThaiBuddhistCalendar           SolarCalendar 
//       UmAlQuraCalendar               LunarCalendar

.NET Framework

Supported in: 4.6, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1
© 2015 Microsoft