小编Hen*_*rik的帖子

闰年上DateTime.AddYears的行为

在DateTime上使用AddYears方法时,任何人都可以解释.NET中闰年计算背后的数学或原因吗?

  • 如果您参加2012年2月29日并增加一年,您将获得2013年2月28日,而不是2013年3月1日(一年后的前一天).
  • 如果您在2012年1月31日之前添加一年,则会在2013年1月31日(一年后的同一日期)到达.

我想大多数人会认为"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)

.net c# datetime

14
推荐指数
1
解决办法
6937
查看次数

监控,锁定还是挥发?

我有一个Windows服务(.NET 4)定期处理队列,例如每15分钟.我使用的System.Threading.Timer是当服务开始每X毫秒触发一次回调时设置的.通常每次运行需要几秒钟而且永远不会发生冲突,但如果我不能假设那么 - 那么如果处理正在进行中,我希望下一次运行立即退出.

这可以通过锁定,易失性bool或监视器轻松解决,但实际上在这种情况下使用的是什么,或者只是一般的首选选项?

我发现其他帖子几乎可以解决这个问题(比如Volatile vs. Interlocked vs. lock)但是需要一些建议才能将其扩展到Timer示例并立即退出.

.net c# multithreading

5
推荐指数
1
解决办法
298
查看次数

Visual Studio 2010中的ASP.NET Web API帮助页面

是否可以在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/

.net asp.net-mvc visual-studio-2010 asp.net-web-api

2
推荐指数
1
解决办法
1563
查看次数