查询日历日的计算
本文关键字:计算 日历 查询 | 更新日期: 2023-09-27 18:14:43
我们是否可以使用日历规则,同时在公历中获得一年中的一天,就像我们在一年中的一周一样- GetWeekInYear(DateTime日期,日历规则,DayOfweek firstDayOfWeek) ?
使用GregorianCalendar.GetDayOfYear(DateTime time)
我不知道有什么不同文化的计算年月日的规则。
更新:
如果您想计算从一年的第一周的第一天开始的天数,其中一年的第一周是根据特定的CalendarWeekRule
确定的,您可以这样做(作为GregorianCalendar
类的扩展方法说明):
public static class GregorianCalendarExtensions
{
private const int DaysInWeek = 7;
public static int GetDaysFromStartOfFirstWeekOfYear(
this GregorianCalendar calendar,
DateTime time,
CalendarWeekRule rule,
DayOfWeek firstDayOfWeek)
{
DayOfWeek dayOfWeek = calendar.GetDayOfWeek(time);
// Calculate 0-index day of week relative to first day of week.
int completedDaysInWeek =
((int)dayOfWeek + DaysInWeek - (int)firstDayOfWeek) % DaysInWeek;
// Decrement week of year by 1 to give count of completed weeks.
int completedWeeksInYear =
calendar.GetWeekOfYear(time, rule, firstDayOfWeek) - 1;
// Increment by one to start counting from 1 rather than 0.
return (completedWeeksInYear * DaysInWeek) + completedDaysInWeek + 1;
}
}
使用例子:
GregorianCalendar cal = new GregorianCalendar();
DateTime jan01;
DateTime.TryParse("1/1/2011", out jan01);
for (int i = 0; i < 4; i++)
{
DateTime date = jan01 + TimeSpan.FromDays(i);
Console.WriteLine(
"{2} {0} is day {1} of year.",
date.ToShortDateString(),
cal.GetDaysFromStartOfFirstWeekOfYear(
date,
CalendarWeekRule.FirstFullWeek,
DayOfWeek.Sunday),
cal.GetDayOfWeek(date));
}
使用Calendar类?快速检查MSDN文档似乎暗示它没有直接提供您想要的方法。
但是,可以通过组合Calendar类和DateTime类来编写一个方法。