相當不錯的問題,但我很困惑如何簡化此代碼並使其更高效。C#中的本月當前月#
我想從當前月份的前3個月,而不是從當天(DateTime.Today)
這裏一個月是我的代碼:
public int NumberTicketsThreeMonthsAgo
{
get { return AllTickets.Count(t => DateTime.Today.AddMonths(-3) < t.CreateDateTime); }
}
謝謝:)
相當不錯的問題,但我很困惑如何簡化此代碼並使其更高效。C#中的本月當前月#
我想從當前月份的前3個月,而不是從當天(DateTime.Today)
這裏一個月是我的代碼:
public int NumberTicketsThreeMonthsAgo
{
get { return AllTickets.Count(t => DateTime.Today.AddMonths(-3) < t.CreateDateTime); }
}
謝謝:)
這可能給出正確的邏輯:
public int NumberTicketsThreeMonthsAgo
{
DateTime dt = new DateTime(DateTime.Today.Year, DateTime.Today.Month,
1).AddMonths(-3);
get { return AllTickets.Count(t => dt < t.CreateDateTime); }
}
謝謝:)這回答了我的問題,並解釋了我也需要做的! – 2014-10-22 09:20:01
試試這個:
public int NumberTicketsThreeMonthsAgo
{
get
{
var earliestDate = new DateTime(DateTime.Today.Year,
DateTime.Today.Month,
1).AddMonths(-3);
return AllTickets.Count(t => earliestDate < t.CreateDateTime);
}
}
謝謝,這真的很有幫助! – 2014-10-22 09:20:54
我並不清楚理解,但我認爲這是ü想什麼,
MessageBox.Show("" + System.DateTime.Now.AddMonths(-3).Month);
不知道這是如何得到upvoted,因爲它在許多方面是錯誤的。 – DavidG 2014-10-22 08:52:35
public int NumberTicketsThreeMonthsAgo
{
get { AllTickets.Count(t => t > new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).AddMonths(-3)); }
}
這不會超過一年的界限。 – DavidG 2014-10-22 08:48:34
在1月份用日期進行測試。所有月份''-2' – 2014-10-22 08:48:42
這是真的,將修改爲使用DateTime.AddMonths(-3) – 2014-10-22 08:50:59
我將存儲新的日期作爲變量和傳遞,而不是多次評估它,它,也從一個屬性更改爲一個方法
public int NumberTicketsThreeMonthsAgo(IEnumerable<Ticket> tickets)
{
var startDate = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1).AddMonths(-3);
return tickets.Count(t => startDate < t.CreateDateTime);
}
我想你想要一個類似於DateTime.Today
的功能,但是會返回給定DateTime
的第一天的方法。您可以使用此extension method:
public static DateTime MonthDayOne(this DateTime date)
{
return new DateTime(date.Year, date.Month, 1);
}
現在這個工作並返回7月1日:
DateTime threeMonthsAgo = DateTime.Now.AddMonths(-3).MonthDayOne();
'AddMonths(-3).MonthDayOne()'和'MonthDayOne().AddMonths(-3)'可能是微妙地不同,然後第二種形式似乎更明智。此外,「現在」不如「今天」適合。 – 2014-10-22 08:55:23
@HenkHolterman:我不明白這兩個疑惑。該方法本身就是OP所要求的。我如何使用它的方式與如何獲得給定月份的第一天無關。我已經使用'Now'來證明時間無關緊要,以強調與'DateTime.Today'的相似性。 – 2014-10-22 09:02:35
是的,DateTime將在2月30日剪輯。幽靈,但它使2個電話相同。但是,你用'Now'來表達一個觀點很容易失去,在現實生活中,這隻會是錯的。 – 2014-10-22 09:46:11
試試這個
public int NumberTicketsThreeMonthsAgo
{
get
{
new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1).AddMonths(-3)
}
}
恐怕我不知道ND。 *當前月份將如何與當前*月份的月份不同? – 2014-10-22 08:42:52
也許將'Day'設置爲'1'? – nvoigt 2014-10-22 08:44:57
我想所以你的意思是說:今天是十月二十二號,那麼你想要的7月1日是3個月前排除當前月份。這樣對嗎? – 2014-10-22 08:46:26