C# 中特定日历(PersianCalender) 中的 GetDayOfWeek

Ara*_*ash 1 c#

我想在 persianCalender 中获取 DayOfWeek 但它始终与 Georgian Calender 相同,

       DateTime today = DateTime.Today;
       PersianCalendar pc = new PersianCalendar();

     var  geDayOfWeek= today.DayOfWeek;             
     var pcDayOfWeek=pc.GetDayOfWeek(today);
Run Code Online (Sandbox Code Playgroud)

为什么 geDayOfWeek 和 pcDayOfWeek 的值总是相同?波斯周从星期六开始,而不是星期一,因此例如星期日应该是 2 而不是 0 。

有什么解决方案可以获取波斯日历中的天数吗?

我需要这个来计算波斯日历而不是格鲁吉亚日历中一周的开始日期和结束日期。

Kah*_*azi 5

您可以为 DateTime 编写一个扩展方法来获取 Persion Day Of Week

public static class DateTimeHelper
{
    public static PersianDayOfWeek PersionDayOfWeek(this DateTime date)
    {
        switch (date.DayOfWeek)
        {
            case DayOfWeek.Saturday:
                return PersianDayOfWeek.Shanbe;
            case DayOfWeek.Sunday:
                return PersianDayOfWeek.Yekshanbe;
            case DayOfWeek.Monday:
                return PersianDayOfWeek.Doshanbe;
            case DayOfWeek.Tuesday:
                return PersianDayOfWeek.Seshanbe;
            case DayOfWeek.Wednesday:
                return PersianDayOfWeek.Charshanbe;
            case DayOfWeek.Thursday:
                return PersianDayOfWeek.Panjshanbe;
            case DayOfWeek.Friday:
                return PersianDayOfWeek.Jome;
            default:
                throw new Exception();
        }
    }
    public enum PersianDayOfWeek
    {
        Shanbe=1,
        Yekshanbe=2,
        Doshanbe=3,
        Seshanbe=4,
        Charshanbe=5,
        Panjshanbe=6,
        Jome=7
    }
}
Run Code Online (Sandbox Code Playgroud)

你可以这样使用它:

PersianDayOfWeek DoW = DateTime.Now.PersionDayOfWeek();
Run Code Online (Sandbox Code Playgroud)