C# 比较没有日期的时间?
我很难比较时间 从我的研究来看,这很可能是因为没有约会的时间 我的代码, 这将从数据库中获取一个C# 比较没有日期的时间?,c#,C#,我很难比较时间 从我的研究来看,这很可能是因为没有约会的时间 我的代码, 这将从数据库中获取一个dateTime值 var getDateTime = sql.Staff_Time_TBLs.Where(p => p.Staff_No == SelectedEmployee.Key && p.Date_Data == day).Select(p => p.Time_Data_1).ToList(); DateTime dateTimeGet = Conve
dateTime
值
var getDateTime = sql.Staff_Time_TBLs.Where(p => p.Staff_No ==
SelectedEmployee.Key && p.Date_Data == day).Select(p => p.Time_Data_1).ToList();
DateTime dateTimeGet = Convert.ToDateTime(getDateTime);
dateTimeGet
返回如下值“2012/12/12 15:03:00.000”
然后我声明变量来保存时间
TimeSpan startCompare = TimeSpan.Parse("15:00");
TimeSpan endCompare = TimeSpan.Parse("21:00");
然后比较这些值
在这种情况下如何比较时间?您可以创建
日期时间
值,而不是时间跨度
来比较值,使用数据库时间的日期
:
DateTime startCompare = dateTimeGet.Date.AddHours(15);
DateTime endCompare = dateTimeGet.Date.AddHours(21);
if ((endCompare > dateTimeGet) && (startCompare < dateTimeGet))
{
// match found
}
只需按如下方式编辑代码:
if ((endCompare > dateTimeGet.TimeOfDay) && (startCompare < dateTimeGet.TimeOfDay))
{
//match found
}
if((endCompare>dateTimeGet.TimeOfDay)和&(startCompare
实际上,您正在endCompare>dateTimeGet
中比较时间和日期,因此您得到了错误
无法将操作数指定给timespan和datetime类型
要比较时间跨度,只需使用TimeOfDay
即可从dateTimeGet
中的日期提取时间
if ((endCompare > dateTimeGet.TimeOfDay) && (startCompare < dateTimeGet.TimeOfDay))
{
//match found
}
if((endCompare>dateTimeGet.TimeOfDay)和&(startCompare
这将把日期转换成时间。有关每日时间的更多详细信息,请参见,希望这对您有用。问题在于,正如您正确地说的,您正在比较日期和时间
时间跨度
是以小时为单位测量的时间,其中日期时间是以天为单位测量的时间
因此2012/12/12 15:03:00.000
大约是735248.625天
或17645967小时
然后将其与15小时的时间跨度进行比较
因此,您需要在您的时间跨度中添加735248天
,或者从日期中删除735248天
两者都很容易做到
如果在日期调用timeTimeOfDay
属性,它将忽略天数,只返回0.625天
as15小时
这意味着您的代码将如下所示
if((endCompare>dateTimeGet.TimeOfDay)和&(startCompare
或
如果将时间跨度添加到午夜日期,它将为比较创建正确的日期时间
这意味着您的代码将如下所示
if((dateTimeGet.Date+endCompare>dateTimeGet)和&(dateTimeGet.Date+startCompare
也许可以使用DateTime.TimeOfDay
?然后你会比较两个TimeSpan
值…@JonSkeet,这就成功了,谢谢你。你知道为什么这篇文章会被否决吗?我尽了我最大的努力找到任何答案之前,我张贴在这里,因为我自学至今。几个月前我买了你的书,对我来说还是有点先进,但已经找到了一些非常有用的东西,即使是我这样的人也可以使用。再次感谢。@KyloRen这可能只是因为格式的原因,你提出问题的方式有点难理解read@MikeT,对不起,我不知道该怎么说。谢谢你的提醒。我错把它添加到了toSortTimeString()
。您需要添加“TimeOfDay”。编辑了我的ans,请检查it.UV以获取帮助。感谢SUV花时间提供帮助。谢谢
if (dateTimeGet.Hour >= 15 && dateTimeGet.Hour <= 21)
// match found
if ((endCompare > dateTimeGet.TimeOfDay) && (startCompare < dateTimeGet.TimeOfDay))
{
//match found
}
if ((endCompare > dateTimeGet.TimeOfDay) && (startCompare < dateTimeGet.TimeOfDay))
{
//match found
}