如果给出年,月和日,如何在c#中找到日期。
e.g。鉴于月份= 03,年份= 2016年。我需要找到星期六发生的日期。
预期产出[我们可以看到2016/03年度的星期六发生在以下日期]:
2016年5月3日
2016年12月3日
19/03/2016
26/03/2016
答案 0 :(得分:3)
List<DateTime> saturdays = new List<DateTime>();
for(int i=0;i<DateTime.DaysInMonth(year, month), i++)
{
DateTime dt = new DateTime(year, month, i);
if (dt.DayOfWeek == DayOfWeek.Saturday)
saturdays.Add(dt);
}
答案 1 :(得分:1)
int year = 2016, month = 3;
DayOfWeek dayOfWeek = DayOfWeek.Saturday;
var dates =
// generate dates for all days in the month
Enumerable.Range(1, DateTime.DaysInMonth(year, month))
.Select(x => new DateTime(year, month, x))
// select only those of particular dayOfWeek
.Where(d => d.DayOfWeek == dayOfWeek)
.ToList();
答案 2 :(得分:1)
对于Linq,没有假设当月的天数:
static IEnumerable<DateTime> GetSaturdaysInMonth(int year, int month)
{
return Enumerable.Range(1, DateTime.DaysInMonth(year, month))
.Select(day => new DateTime(year, month, day))
.Where(dt => dt.DayOfWeek == DayOfWeek.Saturday);
}
答案 3 :(得分:0)
您可以根据年月变量创建DateTime
作为该月的第一天,迭代下个月的第一天,并检查DayOfWeek
property是Saturday
还是不。等;
var month = 3;
var year = 2016;
var start = new DateTime(year, month, 1);
var end = start.AddMonths(1);
while (start < end)
{
if (start.DayOfWeek == DayOfWeek.Saturday)
{
Console.WriteLine(start.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture));
}
start = start.AddDays(1);
}
打印
05/03/2016
12/03/2016
19/03/2016
26/03/2016
答案 4 :(得分:0)
这是一个(非常简单)的可能性:
var startDate = new DateTime(2016, 3, 1);
var list = new List<DateTime>();
for(int i = 0; i < DateTime.DaysInMonth(2016, 3); i++) {
var date = startDate.AddDays(i);
if (date.DayOfWeek == DayOfWeek.Saturday) list.Add(date);
}
您可以在每月的第一天创建startDate 然后,您遍历该月的所有日子并将星期六添加到列表中。