根据按月过滤的两个日期值获取数据
本文关键字:两个 日期 数据 获取 过滤 | 更新日期: 2023-09-27 18:07:30
我有一个事件列表,每个事件有两个日期;开始日期和结束日期。我想按月创建一个过滤器。如何返回用户选择的月份之间的日期?例如,假设用户选择10月份,我想返回这个月内的所有事件。
我已经使用这个来获取今天日期之间的日期,但现在卡住了如何获得一个月之间的范围。
DateTime dateToCheck = DateTime.Today.Date;
DateTime startDate = DateTime.Parse(item["Start Time"].ToString());
DateTime endDate = DateTime.Parse(item["End Time"].ToString());
foreach (SPListItem item in collection)
{
if (startDate <= dateToCheck && dateToCheck < endDate)
{
ListBox1.Items.Add(item["EventTitle"].ToString());
}
}
// set up dummy data
var dates = new[] {DateTime.Now, DateTime.Now, DateTime.Now};
int month = GetMonth();
// get result
var result = dates.Where(date => date.Month == month);
编辑:如果您需要确保日期也有正确的年份,请使用
var dates = new[] {DateTime.Now, DateTime.Now, DateTime.Now};
int year = GetYear();
int month = GetMonth();
var result = dates.Where(date => date.Year == year && date.Month == month);
当然,您可以从任何地方获得年/月数字以及日期列表。
EDIT2:如果你得到一个DateTime对象作为输入,相应地修改:
var dates = new[] {DateTime.Now, DateTime.Now, DateTime.Now};
var input = GetDateTime();
var result = dates.Where(date => date.Year == input.Year && date.Month == input.Month);
您仍然可以使用您的代码稍加修改。作为开始日期,您必须选择每月1日的00:00时间,作为结束日期,您必须使用下个月1日的00:00时间。如果是2015年10月,则为:1 Oct 2015 <= date < 1 Nov 2015
.
int year = 2015;
int month = 10;
DateTime dateToCheck = DateTime.Today.Date;
DateTime startDate = new DateTime(year, month, 1);
DateTime endDate = startDate.AddMonths(1);
foreach (SPListItem item in collection)
{
if (startDate <= dateToCheck && dateToCheck < endDate)
{
ListBox1.Items.Add(item["EventTitle"].ToString());
}
}