在DateTime上使用AddYears方法时,任何人都可以解释.NET中闰年计算背后的数学或原因吗?
我想大多数人会认为"29.02.leapX的一年是01.03.leapX + 1".
例:
// Testing with 29th Feb
var now1 = DateTime.Parse("2012-02-29 15:00:00");
var results1 = new DateTime[]
{
now1.AddYears(1),
now1.AddYears(2),
now1.AddYears(3),
now1.AddYears(4)
};
foreach(var dt in results1)
{
Console.WriteLine(dt.ToString("s"));
}
// Output:
// 2013-02-28T15:00:00
// 2014-02-28T15:00:00
// 2015-02-28T15:00:00
// 2016-02-29T15:00:00
// Testing with 31st Jan
var now2 = DateTime.Parse("2012-01-31 13:00:00");
var results2 = new DateTime[]
{
now2.AddYears(1),
now2.AddYears(2),
now2.AddYears(3),
now2.AddYears(4)
};
foreach(var dt in results2)
{
Console.WriteLine(dt.ToString("s"));
}
// Output:
// 2013-01-31T13:00:00
// 2014-01-31T13:00:00
// …
Run Code Online (Sandbox Code Playgroud) 我有一个Windows服务(.NET 4)定期处理队列,例如每15分钟.我使用的System.Threading.Timer
是当服务开始每X毫秒触发一次回调时设置的.通常每次运行需要几秒钟而且永远不会发生冲突,但如果我不能假设那么 - 那么如果处理正在进行中,我希望下一次运行立即退出.
这可以通过锁定,易失性bool或监视器轻松解决,但实际上在这种情况下使用的是什么,或者只是一般的首选选项?
我发现其他帖子几乎可以解决这个问题(比如Volatile vs. Interlocked vs. lock)但是需要一些建议才能将其扩展到Timer示例并立即退出.
是否可以在Visual Studio 2010中使用ASP.NET Web API帮助页面(即不是web api本身,而是区域和帮助页面)?撰写本文时的最新版本需要Microsoft.AspNet.WebApi.WebHost(≥5.0.0),这需要Microsoft.AspNet.WebApi.Core(≥5.0.0),这需要Microsoft.AspNet.WebApi.Client(≥5.0. 0),这需要.NET 4.5.
是否有解决方法或某种方式手动添加帮助页面?
来源:http://www.nuget.org/packages/Microsoft.AspNet.WebApi.HelpPage/