不是我写的,但很有意思。Azure底层fabric有过这么一段code,目的是检查一张证书的有效期是否在一年以内。
那么要先获得一年后的日期,本来用DateTime.Today().Add(new TimeSpan(365,0,0,0))就可以了(编辑:经提醒,AddYear(1)是最简单而且更精确的)。写代码的哥们脑洞了下写成new DateTime(today.Year+1,today.Month,today.Day)。
经过各种测试运行一直都没问题。直到2012年2月29日,ArgumentOutOfRangeException。
后果是整个Azure挂了十多个小时吧。
----------------------------------------------------------
编辑:关于这次outage,Azure官方的说明在这里:
Summary of Windows Azure Service Disruption on Feb 29th, 2012。有兴趣的可以看下,细节都是公开的。
有些地方我记错了,比如这段代码其实是在做创建一张新的证书并设置有效期为一年后这件事,而非检验证书有效期。