C# 仅使用日期时间格式比较日和显示小时
我的SQL数据库中有一个DateTime列,如何检查该列中的日期是今天还是昨天 我想说的是:如果日期是今天,那么结果就是C# 仅使用日期时间格式比较日和显示小时,c#,asp.net,C#,Asp.net,我的SQL数据库中有一个DateTime列,如何检查该列中的日期是今天还是昨天 我想说的是:如果日期是今天,那么结果就是 今天与昨天相同。在.NET端,您可以检查今天的日期: if (testDate.Date == DateTime.Today) { ... } 设置为今天日期的对象,时间组件设置为00:00:00 然后,您可以使用: if (testDate.Date == DateTime.Today.AddDays(-1)) { ... } 以测试昨天的日期 已定义运
今天与昨天相同。在.NET端,您可以检查今天的日期:
if (testDate.Date == DateTime.Today)
{
...
}
设置为今天日期的对象,时间组件设置为00:00:00
然后,您可以使用:
if (testDate.Date == DateTime.Today.AddDays(-1))
{
...
}
以测试昨天的日期
已定义运算符。MySQL
今天:
昨天:
DATE(DateColumn) = CURDATE() - INTERVAL 1 DAY
C
它是内联的。dt是您的变量,在Sql中键入-DateTime,您可以执行以下操作: 选择案例 当DateDiffdd、Created\u Date、getdate=0时 然后 “今天在:”+CONVERTVARCHAR20,创建日期 当DateDiffdd、Created\u Date、getdate=1时 然后 “昨天在:”+CONVERTVARCHAR20,创建日期 终止
从tableName中,您可以使用SQL来执行此操作
Create Table #t
(
DateCol datetime
)
insert Into #t
values (getdate())
insert Into #t
values (getdate()-1)
insert Into #t
values (getdate()-2)
Select Case When Cast(Floor(Cast(DateCol as float)) as DateTime) = Cast(Floor(Cast(GetDate()as float)) as DateTime) Then
'Today, at ' + convert(varchar(2), DatePart(hour, DateCol)) + ':' + convert(varchar(2), DatePart(minute, DateCol))
When Cast(Floor(Cast(DateCol as float)) as DateTime) = Cast(Floor(Cast(GetDate()-1 as float)) as DateTime) Then
'Yesterday, at ' + convert(varchar(2), DatePart(hour, DateCol)) + ':' + convert(varchar(2), DatePart(minute, DateCol))
else 'More than one day old' End
From #t
drop table #t
啊,我现在看到您希望通过LINQ在.NET中完成
不管怎样,我还是把这个放在这里-有人可能会发现它很有用有很多特殊情况,所以我认为应该将它封装在一个方法中,如下所示:
public static string GetDateDescription(DateTime date)
{
Calendar calendar = CultureInfo.CurrentCulture.Calendar;
if (date.Date == DateTime.Today)
return "Today";
if (date.Date == DateTime.Today.AddDays(1))
return "Tommorow";
if (date.Date == DateTime.Today.AddDays(-1))
return "Yesterday";
if (date.Date == DateTime.Today.AddDays(2))
return "The day after tommorow (dress warm)";
int dateWeek = calendar.GetWeekOfYear(date, CalendarWeekRule.FirstDay, DayOfWeek.Monday);
int todayWeek = calendar.GetWeekOfYear(DateTime.Today, CalendarWeekRule.FirstDay, DayOfWeek.Monday);
if (dateWeek == todayWeek)
return "This week ...";
if (dateWeek - todayWeek == 1)
return "Next week ...";
if (dateWeek - todayWeek == -1)
return "Previous week ...";
if (date.Month == DateTime.Today.Month)
return "This month ...";
if (date.Month - DateTime.Today.Month == 1)
return "Next month ...";
if (date.Month - DateTime.Today.Month == -1)
return "Last month ...";
if (date.Month - DateTime.Today.Month > 1)
return "Far, far away...";
if (date.Month - DateTime.Today.Month < -1)
return "Long time ago...";
return date.ToShortDateString();
}
或
如果可能的话,我需要在LINQ查询中内联检查它。我在LINQ查询中,得到的结果类似于p.CreationDate,它没有.Date属性。。。有什么想法吗?@Vitor-p.CreationDate是什么类型的?@Vitor-啊,那么这段代码不会有帮助,因为它使用的是.NET类型。很抱歉除非您将SQL DateTime转换为.NET DateTime?属性.Days不存在这很奇怪.NET framework的版本是什么?确保dt变量是DateTime,而不是TimeSpan。
DateTime.Now.Subtract(dt).Days == 0 ? "Today" : "Yesterday"
Create Table #t
(
DateCol datetime
)
insert Into #t
values (getdate())
insert Into #t
values (getdate()-1)
insert Into #t
values (getdate()-2)
Select Case When Cast(Floor(Cast(DateCol as float)) as DateTime) = Cast(Floor(Cast(GetDate()as float)) as DateTime) Then
'Today, at ' + convert(varchar(2), DatePart(hour, DateCol)) + ':' + convert(varchar(2), DatePart(minute, DateCol))
When Cast(Floor(Cast(DateCol as float)) as DateTime) = Cast(Floor(Cast(GetDate()-1 as float)) as DateTime) Then
'Yesterday, at ' + convert(varchar(2), DatePart(hour, DateCol)) + ':' + convert(varchar(2), DatePart(minute, DateCol))
else 'More than one day old' End
From #t
drop table #t
public static string GetDateDescription(DateTime date)
{
Calendar calendar = CultureInfo.CurrentCulture.Calendar;
if (date.Date == DateTime.Today)
return "Today";
if (date.Date == DateTime.Today.AddDays(1))
return "Tommorow";
if (date.Date == DateTime.Today.AddDays(-1))
return "Yesterday";
if (date.Date == DateTime.Today.AddDays(2))
return "The day after tommorow (dress warm)";
int dateWeek = calendar.GetWeekOfYear(date, CalendarWeekRule.FirstDay, DayOfWeek.Monday);
int todayWeek = calendar.GetWeekOfYear(DateTime.Today, CalendarWeekRule.FirstDay, DayOfWeek.Monday);
if (dateWeek == todayWeek)
return "This week ...";
if (dateWeek - todayWeek == 1)
return "Next week ...";
if (dateWeek - todayWeek == -1)
return "Previous week ...";
if (date.Month == DateTime.Today.Month)
return "This month ...";
if (date.Month - DateTime.Today.Month == 1)
return "Next month ...";
if (date.Month - DateTime.Today.Month == -1)
return "Last month ...";
if (date.Month - DateTime.Today.Month > 1)
return "Far, far away...";
if (date.Month - DateTime.Today.Month < -1)
return "Long time ago...";
return date.ToShortDateString();
}
DateTime start = DateTime.Now.Date.AddDays(-60);
DateTime end = DateTime.Now.Date.AddDays(+60);
for (DateTime current = start; current < end; current = current.AddDays(1))
{
Console.WriteLine("{0} --> {1}",
current.ToShortDateString(), GetDateDescription(current));
}
DateTime date=(DateTime) p.CreatedDate;
DateTime date = Convert.ToDateTime(p.CreatedDate);