在 C# 中获取下一个光明节日期

Dra*_*cke 5 .net c# datetime date

我试图从今天的 UTC 日期找出下一个光明节的日期。我已经发现 C# 有HebrewCalendar类,并且我能够使用GetYear(),GetMonth()和获取当前的犹太日期GetDayOfMonth()。但是真的不知道如何使用这些信息来获取当前日期下一个将要发生的犹太日期。

光明节的日期是基斯流月 25 日(犹太历的第 3 个月)。

Jcl*_*Jcl 4

@DmitryBychenko的答案很好,尽管如果你不想循环,你也可以计算它:

var calendar = new HebrewCalendar();
var result = DateTime.UtcNow;
if(
        calendar.GetMonth(result) < 3
    || (calendar.GetMonth(result)==3 && calendar.GetDayOfMonth(result)<25)
  )
   result = new DateTime(calendar.GetYear(result), 3, 25, calendar);
else
   result = new DateTime(calendar.GetYear(result)+1, 3, 25, calendar);
Run Code Online (Sandbox Code Playgroud)

如果您的 25/3 以下HebrewCalendar,请使用今年,否则使用下一个

结果也是公历2015年12月7日

如果(根据评论)您出于某种原因不想使用那些讨厌的 if语句,您可以执行以下操作:

var calendar = new HebrewCalendar();
var result = DateTime.UtcNow;
var addYear = (calendar.GetMonth(result) < 3 || (calendar.GetMonth(result)==3 && calendar.GetDayOfMonth(result)<25)) ? 0 : 1;
result = new DateTime(calendar.GetYear(result) + addYear, 3, 25, calendar);
Run Code Online (Sandbox Code Playgroud)

我认为这对可读性没有帮助,但你就可以了