2010-02-10 75 views

回答

6

严格地说,

TimeSpan age = DateTime.Now - dateTimePicker.Value; 

然而,找出某人的 “年龄” 只是稍微复杂一些。

int years = DateTime.Now.Year - dateTimePicker.Value.Year; 

if(dateTimePicker.Value.AddYears(years) > DateTime.Now) years--; 

由于多年长短不一,你必须这样做而不是依赖于这样的代表特定的时间量(同样是搞清楚有多少“月”是真正之间的TimeSpan结构两个日期,因为月份的长度从28-31天不等)。

最后一行代码是为了解释今年还没有发生的人的生日。

+0

int years = DateTime.Now.Year - dateTimePicker.Value.Year; if(dateTimePicker.Value.AddYears(years)> DateTime.Now)years--; >>为什么当我在datetimepicker中添加该代码....年龄不出现? – 2010-02-10 15:05:57

+0

@ malou17:添加该代码不会使年龄出现,它只是计算它并将其放入一个变量中。你想如何出现? – 2010-02-10 15:21:56

+0

漂亮时尚的逻辑,datepicker的ValueChanged是您可以放置​​代码的地方。 – Manny265 2017-02-09 01:32:11

0

假设的DateTimePicker被称为dtpBirthday:

int age = DateTime.Now.Year - dtpBirthday.Value.Year - (DateTime.Now.DayOfYear < dtpBirthday.Value.DayOfYear ? 1 : 0); 
+0

这不会占当月晚些时候发生的生日。例如,如果我的生日恰巧是1901年2月24日,那么这段代码会说我已经109了,而我只是一个敏捷派108。 – 2010-02-10 14:56:37