C# GetDayOfWeek在C中的特定日历(波斯日历)中#

C# GetDayOfWeek在C中的特定日历(波斯日历)中#,c#,C#,我想在波斯尼亚得到星期五,但它总是和格鲁吉亚日历一样 DateTime today = DateTime.Today; PersianCalendar pc = new PersianCalendar(); var geDayOfWeek= today.DayOfWeek; var pcDayOfWeek=pc.GetDayOfWeek(today); 为什么geDayOfWeek和pcDayOfWeek的值总是相同

我想在波斯尼亚得到星期五,但它总是和格鲁吉亚日历一样

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

     var  geDayOfWeek= today.DayOfWeek;             
     var pcDayOfWeek=pc.GetDayOfWeek(today);
为什么geDayOfWeek和pcDayOfWeek的值总是相同的? 波斯周从星期六开始,而不是星期一,所以例如星期天应该是2而不是0

有没有办法在波斯历法中获得日数


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

您可以为DateTime编写一个扩展方法,以获得波斯日历中的一周日期

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
    }
}
您可以这样使用它:

PersianDayOfWeek DoW = DateTime.Now.PersionDayOfWeek();

您可以为DateTime编写一个扩展方法,以在一周中的某一天获取数据

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
    }
}
您可以这样使用它:

PersianDayOfWeek DoW = DateTime.Now.PersionDayOfWeek();

您看到这种行为的原因是,
Calendar.GetDayOfWeek
的返回值为enum ie.constant-Sunday始终为0,与您使用的日历无关。换句话说,返回值并不反映在特定日历中哪一天被视为“一周的开始…”。

您看到这种行为的原因是
日历的返回值。GetDayOfWeek
是枚举,即常量-Sunday始终是0,与您使用的日历无关。换句话说,返回的值不反映在特定日历中被视为“一周开始”的日期…

查看这是否有帮助-否,我可以在波斯日历中获取日期,但我无法在波斯日历中获取日数,例如,如果当前日期是星期日,则pc.GetDayOfWeek(今天)应返回2而不是0。查看这是否有帮助-否,我可以在波斯语日历中获取日期,但我无法在波斯语日历中获取日期,例如,如果当前日期是星期日,则pc.GetDayOfWeek(今天)应返回2而不是0。谢谢arvin,那么GetDayOfWeek在波斯语日历中有何用途?@Arash使用此方法,如果您的日期是星期日,您将获得,您将获得
PersianDayOfWeek.Yekshanbe
,即2,如您所需。谢谢。但是微软应该重新设计波斯日历,在这个日历中GetDayOfWeek的意义是什么。谢谢arvin,那么在波斯日历中GetDayOfWeek有什么用呢?@Arash使用这个方法,如果你的日期是星期天,你会得到
PersianDayOfWeek.Yekshanbe
,它是2,你想要的。谢谢。但微软应该重新设计波斯日历,在这个日历中GetDayOfWeek的意义是什么。