我将有两个约会.出生日期和事件日期
我想计算出生日期和活动日期之间的时间是否小于或大于18年.活动日期将始终大于出生日期.
如果低于18,则其他为假.
EG:DOB 29/02/1976.活动日期2017年12月29日
这里的人超过18岁!
我不确定使用DateAdd或DateDiff是最好的方法 - 或者即使使用DateTime.Days && DateTime.Months等
你给出的例子是一个相当容易的例子 - 但是有更难的例子.考虑一下:
如果您在出生日期增加18年,您将获得1994年2月28日 - 活动日期.这表明这个人已经 18岁了.
如果你从活动日期减去18年,你将获得1976年2月28日(在该人的生日之前).这表明这个人不是 18岁.
我怀疑在几乎所有情况下,你都会认为这个人在2月28日的非闰年庆祝他们的生日.所以代码是:
var adult = birthDate.AddYears(18) <= eventDate;
Run Code Online (Sandbox Code Playgroud)
确保这两个值都只是日期而没有任何时间.
核心.NET库不提供任何方法来查找两个值之间的时间段DateTime.你可以找到TimeSpan,但这不是一回事,对历法计算没用.(例如,您无法判断TimeSpan30天中的30天是否整整一个月,因为它取决于上下文.)
我的Noda Time库确实提供了这个功能:
var birthDate = new LocalDate(1976, 2, 29);
var eventDate = new LocalDate(1994, 2, 28);
var period = Period.Between(birthDate, eventDate);
var adult = period.Years >= 18;
Console.WriteLine(period); // P18Y
Run Code Online (Sandbox Code Playgroud)
......但DateTime在这种情况下,您可以轻松完成所需的工作.(如果您有其他日期/时间方案,我建议使用Noda Time,只是基于它旨在使日期/时间工作更容易正确的原则.)
| 归档时间: |
|
| 查看次数: |
299 次 |
| 最近记录: |