【问题标题】:LocalDate from month and day of week in NodaTime来自 NodaTime 中的月份和星期几的 LocalDate
【发布时间】:2014-08-14 20:49:39
【问题描述】:

我希望从诸如“2014 年 3 月的第二个星期一”之类的描述中构造一个日期。 我该怎么做呢? LocalDateFromWeekYearWeekAndDay 似乎是一个开始,但正如我所说,我希望提供一个月中的一周,而不是一年中的一周。

【问题讨论】:

  • 听起来好像这是重复的:stackoverflow.com/questions/2136487/…
  • 这可能是一个很好的起点,但请注意这里使用的是NodaTime
  • 你真的需要像你给出的例子那样解析一串文本吗?或者您是否已经为每件作品设置了单独的变量?
  • @MattJohnson:后者

标签: c# .net date dayofweek nodatime


【解决方案1】:

这当然可以改进,但这里有一个可行的函数:

public static LocalDate GetDay(int year, int month, IsoDayOfWeek dayOfWeek,
                                                                    int instance)
{
    int daysInMonth = CalendarSystem.Iso.GetDaysInMonth(year, month);

    var ld = new LocalDate(year, month, 1);
    if (ld.IsoDayOfWeek != dayOfWeek)
        ld = ld.Next(dayOfWeek);
    for (int i = 1; i < instance && ld.Day + 7 <= daysInMonth; i++)
        ld = ld.PlusWeeks(1);
    return ld;
}

如果你想要最后一个实例,你可以为实例传递 5,它可能在第 4 周或第 5 周。

改进可能包括对其他日历的支持,以及更好地使用模数来避免循环。

(A feature request 已提交,2.0 可能会支持。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-15
    • 2011-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多