-
Notifications
You must be signed in to change notification settings - Fork 0
Code Examples
Agent 57951 edited this page Dec 31, 2025
·
1 revision
Comprehensive collection of code examples demonstrating common usage patterns.
- Basic Date Operations
- Date Formatting
- Date Parsing
- Date Arithmetic
- Date Comparisons
- Gregorian Integration
- Astronomical Dates
- Working with Different Dialects
using KurdishCalendar.Core;
using System;
// Create a specific Kurdish date
KurdishDate nowruz = new KurdishDate(2725, 1, 1);
// Get today's Kurdish date
KurdishDate today = KurdishDate.Today;
// Get current Kurdish date and time
KurdishDate now = KurdishDate.Now;
// Convert from Gregorian DateTime
DateTime gregorian = new DateTime(2025, 3, 21);
KurdishDate fromGregorian = KurdishDate.FromDateTime(gregorian);
// Implicit conversion from DateTime
KurdishDate implicit = new DateTime(2025, 3, 21);using KurdishCalendar.Core;
using System;
KurdishDate kurdishDate = new KurdishDate(2725, 1, 1);
// Convert to Gregorian DateTime
DateTime gregorian = kurdishDate.ToDateTime();
// Explicit conversion to DateTime
DateTime explicitConversion = (DateTime)kurdishDate;
Console.WriteLine($"Kurdish: {kurdishDate}");
Console.WriteLine($"Gregorian: {gregorian:yyyy-MM-dd}");
// Output:
// Kurdish: 01/01/2725
// Gregorian: 2025-03-21using KurdishCalendar.Core;
KurdishDate date = new KurdishDate(2725, 6, 15);
int year = date.Year; // 2725
int month = date.Month; // 6
int day = date.Day; // 15
int dayOfYear = date.DayOfYear; // 186
bool isLeap = date.IsLeapYear; // false
DayOfWeek dayOfWeek = date.DayOfWeek; // e.g., Monday
Console.WriteLine($"Year: {year}");
Console.WriteLine($"Month: {month}");
Console.WriteLine($"Day: {day}");
Console.WriteLine($"Day of year: {dayOfYear}");
Console.WriteLine($"Is leap year: {isLeap}");
Console.WriteLine($"Day of week: {dayOfWeek}");using KurdishCalendar.Core;
KurdishDate date = new KurdishDate(2725, 1, 15);
// Short date format: d
string shortDate = date.ToString("d");
// Output: 15/01/2725
// Long date format: D
string longDate = date.ToString("D", KurdishDialect.SoraniLatin);
// Output: 15 Xakelêwe 2725
// Month day format: M or m
string monthDay = date.ToString("M", KurdishDialect.SoraniLatin);
// Output: 15 Xakelêwe
// Year month format: Y or y
string yearMonth = date.ToString("Y", KurdishDialect.SoraniLatin);
// Output: Xakelêwe 2725
// Full date with day name: f
string fullShort = date.ToString("f", KurdishDialect.SoraniLatin);
// Output: YekŞemme, 15 Xakelêwe 2725
// Full date with day name: F
string fullLong = date.ToString("F", KurdishDialect.SoraniLatin);
// Output: YekŞemme, 15 Xakelêwe 2725using KurdishCalendar.Core;
KurdishDate date = new KurdishDate(2725, 6, 15);
// Custom formats
string format1 = date.ToString("dd/MM/yyyy", KurdishDialect.SoraniLatin);
// Output: 15/06/2725
string format2 = date.ToString("d MMMM yyyy", KurdishDialect.SoraniLatin);
// Output: 15 Xermanan 2725
string format3 = date.ToString("dddd, dd MMM yy", KurdishDialect.SoraniLatin);
// Output: YekŞemme, 15 Xer 25
string format4 = date.ToString("MMMM dd, yyyy", KurdishDialect.SoraniLatin);
// Output: Xermanan 15, 2725
// Format tokens:
// d, dd = day (1-2 digits)
// ddd = abbreviated day name
// dddd = full day name
// M, MM = month number (1-2 digits)
// MMM = abbreviated month name
// MMMM = full month name
// yy = 2-digit year
// yyyy = 4-digit yearusing KurdishCalendar.Core;
KurdishDate date = new KurdishDate(2725, 1, 15);
// Sorani Latin
string soraniLatin = date.ToString("D", KurdishDialect.SoraniLatin);
// Output: 15 Xakelêwe 2725
// Sorani Arabic
string soraniArabic = date.ToString("D", KurdishDialect.SoraniArabic);
// Output: ١٥ خاکەلێوە ٢٧٢٥
// Kurmanji Latin
string kurmanjiLatin = date.ToString("D", KurdishDialect.KurmanjiLatin);
// Output: 15 Xakelêwe 2725
// Kurmanji Arabic
string kurmanjiArabic = date.ToString("D", KurdishDialect.KurmanjiArabic);
// Output: ١٥ خاکەلێوە ٢٧٢٥
// Hawrami Latin
string hawramiLatin = date.ToString("D", KurdishDialect.HawramiLatin);
// Output: 15 Newroz 2725
// Hawrami Arabic
string hawramiArabic = date.ToString("D", KurdishDialect.HawramiArabic);
// Output: ١٥ نەورۆز ٢٧٢٥using KurdishCalendar.Core;
KurdishDate date = new KurdishDate(2725, 1, 15);
// Force Left-to-Right (LTR)
string ltr = date.ToString("D", KurdishDialect.SoraniArabic, KurdishTextDirection.LeftToRight);
// Force Right-to-Left (RTL)
string rtl = date.ToString("D", KurdishDialect.SoraniLatin, KurdishTextDirection.RightToLeft);
// Default (auto-detect based on script)
string auto = date.ToString("D", KurdishDialect.SoraniArabic);
// Arabic script defaults to RTLusing KurdishCalendar.Core;
// Parse numeric format
KurdishDate date1 = KurdishDate.Parse("15/01/2725", KurdishDialect.SoraniLatin);
// Parse long format with month name
KurdishDate date2 = KurdishDate.Parse("15 Xakelêwe 2725", KurdishDialect.SoraniLatin);
// Parse with abbreviated month
KurdishDate date3 = KurdishDate.Parse("15 Xak 2725", KurdishDialect.SoraniLatin);
// Parse Arabic numerals
KurdishDate date4 = KurdishDate.Parse("١٥/٠١/٢٧٢٥", KurdishDialect.SoraniArabic);
// Parse with Arabic script month names
KurdishDate date5 = KurdishDate.Parse("١٥ خاکەلێوە ٢٧٢٥", KurdishDialect.SoraniArabic);using KurdishCalendar.Core;
string input = "15 Xakelêwe 2725";
if (KurdishDate.TryParse(input, KurdishDialect.SoraniLatin, out KurdishDate result))
{
Console.WriteLine($"Successfully parsed: {result}");
}
else
{
Console.WriteLine("Failed to parse date");
}
// Parse user input safely
string userInput = Console.ReadLine();
if (KurdishDate.TryParse(userInput, KurdishDialect.SoraniLatin, out KurdishDate userDate))
{
Console.WriteLine($"You entered: {userDate.ToString("D", KurdishDialect.SoraniLatin)}");
}
else
{
Console.WriteLine("Invalid date format. Please use: dd/MM/yyyy or dd MonthName yyyy");
}using KurdishCalendar.Core;
KurdishDate date = new KurdishDate(2725, 1, 1);
// Add days
KurdishDate tomorrow = date.AddDays(1);
KurdishDate nextWeek = date.AddDays(7);
KurdishDate yesterday = date.AddDays(-1);
// Add months
KurdishDate nextMonth = date.AddMonths(1);
KurdishDate lastMonth = date.AddMonths(-1);
KurdishDate sixMonthsLater = date.AddMonths(6);
// Add years
KurdishDate nextYear = date.AddYears(1);
KurdishDate tenYearsAgo = date.AddYears(-10);
Console.WriteLine($"Original: {date}");
Console.WriteLine($"Tomorrow: {tomorrow}");
Console.WriteLine($"Next month: {nextMonth}");
Console.WriteLine($"Next year: {nextYear}");using KurdishCalendar.Core;
KurdishDate date1 = new KurdishDate(2725, 1, 1);
KurdishDate date2 = new KurdishDate(2725, 6, 15);
// Calculate difference in days
int daysDifference = date2.DaysDifference(date1);
Console.WriteLine($"Days between dates: {daysDifference}");
// Output: Days between dates: 165
// Calculate age in years
KurdishDate birthDate = new KurdishDate(2700, 1, 1);
KurdishDate today = KurdishDate.Today;
int age = today.Year - birthDate.Year;
if (today.Month < birthDate.Month ||
(today.Month == birthDate.Month && today.Day < birthDate.Day))
{
age--;
}
Console.WriteLine($"Age: {age} years");using KurdishCalendar.Core;
KurdishDate date1 = new KurdishDate(2725, 1, 1);
KurdishDate date2 = new KurdishDate(2725, 6, 15);
KurdishDate date3 = new KurdishDate(2725, 1, 1);
// Equality
bool isEqual = (date1 == date3); // true
bool isNotEqual = (date1 != date2); // true
// Comparison
bool isLess = (date1 < date2); // true
bool isGreater = (date2 > date1); // true
bool isLessOrEqual = (date1 <= date3); // true
bool isGreaterOrEqual = (date2 >= date1); // true
// Check if date is in the past
KurdishDate today = KurdishDate.Today;
bool isPast = (date1 < today);
// Check if date is in the future
bool isFuture = (date2 > today);using KurdishCalendar.Core;
// Check if it's someone's birthday
KurdishDate birthDate = new KurdishDate(2700, 3, 15);
KurdishDate today = KurdishDate.Today;
bool isBirthday = (today.Month == birthDate.Month && today.Day == birthDate.Day);
// Check if event has passed
KurdishDate eventDate = new KurdishDate(2725, 6, 1);
bool eventHasPassed = (today > eventDate);
// Check if within date range
KurdishDate startDate = new KurdishDate(2725, 1, 1);
KurdishDate endDate = new KurdishDate(2725, 12, 29);
bool isInRange = (today >= startDate && today <= endDate);
// Find the earlier/later date
KurdishDate earlier = (date1 < date2) ? date1 : date2;
KurdishDate later = (date1 > date2) ? date1 : date2;using KurdishCalendar.Core;
using System;
DateTime gregorianDate = new DateTime(2025, 1, 28);
// Kurmanji Gregorian (Latin)
string kurmanjiLatin = gregorianDate.ToKurmanjiGregorianLong();
// Output: 28 Kanûna Duyê 2025
string kurmanjiShort = gregorianDate.ToKurmanjiGregorianShort();
// Output: 28 Kan Duy 2025
// Kurmanji Gregorian (Arabic)
string kurmanjiArabic = gregorianDate.ToKurmanjiGregorian(
GregorianKurmanjiFormatter.ScriptType.Arabic
);
// Output: ٢٨ کانوونا دویێ ٢٠٢٥
// Sorani Gregorian (Latin)
string soraniLatin = gregorianDate.ToSoraniGregorianLong();
// Output: 28 Kanûnî Duhem 2025
string soraniShort = gregorianDate.ToSoraniGregorianShort();
// Output: 28 Kan2 2025
// Sorani Gregorian (Arabic)
string soraniArabic = gregorianDate.ToSoraniGregorian(
GregorianSoraniFormatter.ScriptType.Arabic
);
// Output: ٢٨ كانونى دووەم ٢٠٢٥using KurdishCalendar.Core;
using System;
DateTime date = new DateTime(2025, 12, 25);
// Custom format with Kurmanji names
string custom1 = date.ToKurmanjiGregorian(
GregorianKurmanjiFormatter.ScriptType.Latin,
"dd MMM yyyy"
);
// Output: 25 Kan Êk 2025
string custom2 = date.ToKurmanjiGregorian(
GregorianKurmanjiFormatter.ScriptType.Latin,
"MMMM dd, yyyy"
);
// Output: Kanûna Êkê 25, 2025
// Custom format with Sorani names
string custom3 = date.ToSoraniGregorian(
GregorianSoraniFormatter.ScriptType.Latin,
"dd/MM/yyyy"
);
// Output: 25/12/2025using KurdishCalendar.Core;
// Get Kurmanji Gregorian month name
string kurmanjiJanuary = GregorianKurmanjiFormatter.GetMonthName(1);
// Output: Kanûna Duyê
string kurmanjiJanuaryShort = GregorianKurmanjiFormatter.GetMonthName(1,
GregorianKurmanjiFormatter.ScriptType.Latin,
abbreviated: true
);
// Output: Kan Duy
// Get Sorani Gregorian month name
string soraniJanuary = GregorianSoraniFormatter.GetMonthName(1);
// Output: Kanûnî Duhem
string soraniJanuaryArabic = GregorianSoraniFormatter.GetMonthName(1,
GregorianSoraniFormatter.ScriptType.Arabic
);
// Output: كانونى دووەمusing KurdishCalendar.Core;
// Create astronomical date (uses precise equinox calculation)
KurdishAstronomicalDate astroDate = new KurdishAstronomicalDate(2725, 1, 1);
// Create with specific location
KurdishAstronomicalDate erbilDate = KurdishAstronomicalDate.FromErbil(2725, 1, 1);
KurdishAstronomicalDate tehranDate = KurdishAstronomicalDate.FromTehran(2725, 1, 1);
KurdishAstronomicalDate sulaymaniyahDate = KurdishAstronomicalDate.FromSulaymaniyah(2725, 1, 1);
// Create with custom longitude
KurdishAstronomicalDate customDate = KurdishAstronomicalDate.FromLongitude(
2725, 1, 1,
45.4375 // Sulaymaniyah longitude
);
// Convert from Gregorian
DateTime gregorian = new DateTime(2025, 3, 21);
KurdishAstronomicalDate fromGregorian = KurdishAstronomicalDate.FromDateTime(gregorian);
// Get today's astronomical date
KurdishAstronomicalDate today = KurdishAstronomicalDate.Today;using KurdishCalendar.Core;
// Standard to Astronomical (preserve values)
KurdishDate standard = new KurdishDate(2725, 1, 1);
KurdishAstronomicalDate astro1 = standard.ToAstronomical();
// Standard to Astronomical (recalculate through Gregorian)
KurdishAstronomicalDate astro2 = standard.ToAstronomicalRecalculated();
// Astronomical to Standard (preserve values)
KurdishAstronomicalDate astroDate = new KurdishAstronomicalDate(2725, 1, 1);
KurdishDate standard1 = astroDate.ToStandardDate();
// Astronomical to Standard (recalculate through Gregorian)
KurdishDate standard2 = astroDate.ToStandardDateRecalculated();using KurdishCalendar.Core;
// Standard leap year (33-year cycle)
KurdishDate standardDate = new KurdishDate(2726, 1, 1);
bool isStandardLeap = standardDate.IsLeapYear;
// Astronomical leap year (based on actual equinox timing)
KurdishAstronomicalDate astroDate = KurdishAstronomicalDate.FromErbil(2726, 1, 1);
bool isAstroLeap = astroDate.IsLeapYear;
Console.WriteLine($"Standard leap: {isStandardLeap}");
Console.WriteLine($"Astronomical leap: {isAstroLeap}");
// Note: These may differ by 1-2 days due to actual equinox variationsusing KurdishCalendar.Core;
KurdishDate date = new KurdishDate(2725, 1, 15);
// Display in all dialects
var dialects = new[]
{
KurdishDialect.SoraniLatin,
KurdishDialect.SoraniArabic,
KurdishDialect.KurmanjiLatin,
KurdishDialect.KurmanjiArabic,
KurdishDialect.HawramiLatin,
KurdishDialect.HawramiArabic
};
foreach (var dialect in dialects)
{
string formatted = date.ToString("D", dialect);
Console.WriteLine($"{dialect}: {formatted}");
}
// Output:
// SoraniLatin: 15 Xakelêwe 2725
// SoraniArabic: ١٥ خاکەلێوە ٢٧٢٥
// KurmanjiLatin: 15 Xakelêwe 2725
// KurmanjiArabic: ١٥ خاکەلێوە ٢٧٢٥
// HawramiLatin: 15 Newroz 2725
// HawramiArabic: ١٥ نەورۆز ٢٧٢٥using KurdishCalendar.Core;
using System;
// User settings
class UserSettings
{
public KurdishDialect PreferredDialect { get; set; }
public bool UseArabicScript { get; set; }
}
// Format dates according to user preference
string FormatDateForUser(KurdishDate date, UserSettings settings)
{
KurdishDialect dialect = settings.PreferredDialect;
// Adjust for script preference
if (settings.UseArabicScript)
{
dialect = dialect switch
{
KurdishDialect.SoraniLatin => KurdishDialect.SoraniArabic,
KurdishDialect.KurmanjiLatin => KurdishDialect.KurmanjiArabic,
KurdishDialect.HawramiLatin => KurdishDialect.HawramiArabic,
_ => dialect
};
}
return date.ToString("D", dialect);
}
// Usage
UserSettings user1 = new UserSettings
{
PreferredDialect = KurdishDialect.SoraniLatin,
UseArabicScript = false
};
UserSettings user2 = new UserSettings
{
PreferredDialect = KurdishDialect.KurmanjiLatin,
UseArabicScript = true
};
KurdishDate date = KurdishDate.Today;
Console.WriteLine($"User 1: {FormatDateForUser(date, user1)}");
Console.WriteLine($"User 2: {FormatDateForUser(date, user2)}");using KurdishCalendar.Core;
using System;
public class BirthdayCalculator
{
public static int CalculateAge(KurdishDate birthDate)
{
KurdishDate today = KurdishDate.Today;
int age = today.Year - birthDate.Year;
// Subtract 1 if birthday hasn't occurred yet this year
if (today.Month < birthDate.Month ||
(today.Month == birthDate.Month && today.Day < birthDate.Day))
{
age--;
}
return age;
}
public static int DaysUntilBirthday(KurdishDate birthDate)
{
KurdishDate today = KurdishDate.Today;
KurdishDate nextBirthday = new KurdishDate(
today.Year,
birthDate.Month,
birthDate.Day
);
// If birthday has passed this year, use next year
if (nextBirthday < today)
{
nextBirthday = new KurdishDate(
today.Year + 1,
birthDate.Month,
birthDate.Day
);
}
return nextBirthday.DaysDifference(today);
}
}
// Usage
KurdishDate birthDate = new KurdishDate(2700, 6, 15);
int age = BirthdayCalculator.CalculateAge(birthDate);
int daysUntil = BirthdayCalculator.DaysUntilBirthday(birthDate);
Console.WriteLine($"Age: {age} years");
Console.WriteLine($"Days until next birthday: {daysUntil}");using KurdishCalendar.Core;
using System.Collections.Generic;
public static class DateRangeExtensions
{
public static IEnumerable GetDateRange(
KurdishDate start,
KurdishDate end)
{
KurdishDate current = start;
while (current <= end)
{
yield return current;
current = current.AddDays(1);
}
}
}
// Usage
KurdishDate start = new KurdishDate(2725, 1, 1);
KurdishDate end = new KurdishDate(2725, 1, 7);
Console.WriteLine("First week of the year:");
foreach (var date in DateRangeExtensions.GetDateRange(start, end))
{
string dayName = KurdishCultureInfo.GetDayName(
date.DayOfWeek,
KurdishDialect.SoraniLatin
);
Console.WriteLine($"{date.ToString("D", KurdishDialect.SoraniLatin)} - {dayName}");
}For more examples and documentation, see: