gpt4 book ai didi

c# - DateTime 按日期或小时分组

转载 作者:行者123 更新时间:2023-12-03 19:22:16 25 4
gpt4 key购买 nike

2010年2月1日 0:00:00 -> 2010年2月1日随时

01.02.2010 0:00:00 -> 01.02.2010 0:任意分钟和秒

这是我的约会:

 DateTime x;

这是01.02.2010 0:00:00作为字符串

 x.Date.ToString()

这里我比较日期

DatarowsForOneDay = dt.Select("DailyRecTime= '" + x.ToString() + "'");

那么我如何按日期+小时进行分组而不关心分钟和秒。

最佳答案

您可以编写自己的 IEqualityComparer<DateTime>仅比较您关心的 DateTime 部分。 LINQ 的 GroupBy 有一个重载,需要 IEqualityComparer 。我最近遇到了同样的问题,就是这么做的。

但是您必须调用GroupBy在转换为字符串之前。如果不能,那么您可能需要创建一个 IEqualityComparer<string>并将字符串解析回 DateTime在比较之前。

我现在没有原始代码。我凭内存重新输入了此内容,但没有进行测试。


public class DateAndHourComparer : IEqualityComparer
{
public bool Equals(DateTime x, DateTime y)
{
var xAsDateAndHours = AsDateHoursAndMinutes(x);
var yAsDateAndHours = AsDateHoursAndMinutes(y);

return xAsDateAndHours.Equals(yAsDateAndHours);
}

private DateTime AsDateHoursAndMinutes(DateTime dateTime)
{
return new DateTime(dateTime.Year, dateTime.Month,
dateTime.Day, dateTime.Hour,
dateTime.Minute, 0);
}

public int GetHashCode(DateTime obj)
{
return AsDateHoursAndMinutes(obj).GetHashCode();
}
}

我从来没有做过基于字符串的版本,但它可以使用上面的 DateTime基于代码,看起来像......


public class DateAndHourStringComparer : IEqualityComparer
{
private readonly DateAndHourComparer dateComparer = new DateAndHourComparer();

public bool Equals(string x, string y)
{
var xDate = DateTime.Parse(x);
var yDate = DateTime.Parse(y);

return dateComparer.Equals(xDate, yDate);
}

public int GetHashCode(string obj)
{
var date = DateTime.Parse(obj);
return dateComparer.GetHashCode(date);
}
}

我没有测试过,我没有添加空检查或格式检查。该代码旨在演示总体思路。

关于c# - DateTime 按日期或小时分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2408320/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com