2009-07-16 147 views

回答

43
var now = DateTime.Now;  
var firstDayCurrentMonth = new DateTime(now.Year, now.Month, 1); 

var lastDayLastMonth = firstDayCurrentMonth.AddDays(-1); 
+2

好极了!只是做了一个单元测试,并且适用于飞跃和非飞跃年! – 2009-07-16 15:14:29

13
DateTime now = DateTime.Now; 
DateTime lastDayOfLastMonth = now.Date.AddDays(-now.Day); 
+0

多次DateTime.Now调用可能代价高昂,因为每次引用DateTime结构的新实例时都会创建。 – opedog 2009-07-16 14:53:08

+9

@opedog:昂贵是一个相对的术语。这个* slow *版本可以在我的机器上管理大约1.7M次迭代/秒,相比之下,如果我调用`DateTime.Now`一次并重新使用该实例,则每秒大约需要2.7M次迭代。当然,这是一个不错的改进,但我怀疑它是否会在大多数现实世界中被注意到。 – LukeH 2009-07-16 15:06:41

相关问题