【问题标题】:GetDayOfWeek in specific calender(PersianCalender) in C#C# 中特定日历(波斯日历)中的 GetDayOfWeek
【发布时间】:2016-07-03 10:35:05
【问题描述】:

我想在 persianCalnder 中获取 DayOfWeek,但它始终与格鲁吉亚日历相同,

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

     var  geDayOfWeek= today.DayOfWeek;             
     var pcDayOfWeek=pc.GetDayOfWeek(today);

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

在波斯日历中获取日期的任何解决方案?

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

【问题讨论】:

  • 看看这是否有帮助 - stackoverflow.com/questions/30683664/…
  • 不,我可以获取波斯日历中的日期,但我无法获取波斯日历中的日期编号,例如,如果当天是星期日,则 pc.GetDayOfWeek(today) 应返回 2 而不是 0 .

标签: c#


【解决方案1】:

您可以为 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
    }
}

你可以这样使用它:

PersianDayOfWeek DoW = DateTime.Now.PersionDayOfWeek();

【讨论】:

  • 感谢 arvin,那么在波斯日历中 GetDayOfWeek 有什么用?
  • @Arash 使用这种方法,如果您的日期是星期天,您将获得 PersianDayOfWeek.Yekshanbe,即 2 ,如您所愿。
  • 谢谢。但是微软应该重新设计 persianCalenday ,这个日历中 GetDayOfWeek 的意义何在。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多