C# 中的日期时间转换问题

本文关键字:转换 问题 时间 日期 | 更新日期: 2023-09-27 18:36:31

我有以下SQL片段:

WHERE YEAR(wo.audt_created_dttm) >= 2011 - 3 --narrows down to a year
AND YEAR(wo.audt_created_dttm) >= 2006 -- bad data less than 2006
AND wo.audt_created_dttm < DATEADD(mm, 1, CAST(CAST(1 * 3 as varchar) + '/01/' +  CAST(2011 as varchar) as DateTime))

我将其转换为 LINQ to SQL(用于 LINQPad 中的测试目的),如下所示:

int year = 2012, quarter = 1;
DateTime timeframe = new DateTime(year, (quarter * 3), 01).AddMonths(1); 

where wo.Audt_created_dttm.Value.Year >= year - 3 && wo.Audt_created_dttm.Value.Year >= 2006
    && wo.Audt_created_dttm < timeframe && (s.Id =="NM" || s.Id == "TH") && 
    (wo.Clsdt_date ?? new DateTime(3000, 01, 01)) < DateTime.Now

但是,对于实际的解决方案,我不想具体定义年份或季度。 我希望年份和季度是最新的。

在这一年里,我试图这样做:

DateTime timeframe = new DateTime(timeframe.Year, (quarter * 3), 01).AddMonths(1);

但是编译器根本不喜欢这样。 然后我试了这个:

DateTime setYear = new DateTime();
DateTime timeframe = new DateTime(setYear.Year, (quarter * 3), 01).AddMonths(1)

那也没用。我不知道如何做年度或季度,并希望得到任何建议

C# 中的日期时间转换问题

我希望年份和季度是最新的。

要获取当前季度的第一天,您可以使用以下代码:

var now = DateTime.Now;
var quarter = (now.Month - 1)/3;
var timeframe = new DateTime(now.Year, 3*quarter + 1, 1);

timeframe将包含 2012-04-01、2012-07-01、2012-10-01 等,具体取决于当前日期。

你想要今年吗?

  DateTime.Today.Year