也许这可能是愚蠢但是我没有与我的年龄有关的问题,但有时候计算某人的确切年龄是好的,我已经在我的个人资料中介绍了我的生日(01/12/1975)“dd / mm / yyyy“它计算了33而我实际上仍然是32,计算确切的年龄不是更好吗?
也许
DateTime dt1 = DateTime.Now;
TimeSpan dt2;
dt2 = dt1.Subtract(new DateTime(1975, 12, 01));
double year = dt2.TotalDays / 365;
年度结果为32.77405678074
这段代码可以吗?
答案 0 :(得分:1)
也许这可能是愚蠢但是我没有与我的年龄有关的问题,但有时候计算某人的确切年龄是好的,我已经在我的个人资料中介绍了我的生日(01/12/1975)“dd / mm / yyyy“它计算了33,我实际上仍然是32,计算确切的年龄不是更好吗?
我的猜测是,这是一个本地化问题,虽然我不知道会发生什么,因为(至少对我来说)个人资料你已经用“YYYY / MM / DD”格式填写你的年龄。但是你的生日是在传统的美国环境中作为有效日期(1月12日)的生日,所以这是我要研究的领域。我也出生在1975年,我的生日是下个月,这是我的年龄。
答案 1 :(得分:0)
实际上,由于闰年,您的代码将会关闭。由于时间跨度对象没有TotalYears属性,因此获得它的最佳方法是
原谅VB.Net
Dim myAge AS Integer = DateTime.Now.year - BirthDate.year
If Birthdate.month < DateTime.Now.Month _
OrElse BirthDate.Month = DateTime.Now.Month AndAlso Birthdate.Day < DateTime.Now.Day Then
MyAge -= 1
END IF
答案 2 :(得分:0)
如果你出生于1975年1月12日,那么今天你将年满33岁。
如果你出生于1975年12月1日,那么今天你将年满32岁。
如果您在编辑个人资料时阅读生日字段中的注释,您会看到它显示为“YYYY / MM / DD”,我确信它会尝试解释其他格式的日期,但它看起来像是解释了MM / DD / YYYY(美国标准日期)优先于DD / MM / YYYY(欧洲标准日期)。简单的解决方法是根据建议的输入样式输入您的生日日期。
答案 3 :(得分:0)
int ag1;
string st, ag;
void agecal()
{
st = TextBox4.Text;
DateTimeFormatInfo dtfi = new DateTimeFormatInfo();
dtfi.ShortDatePattern = "MM/dd/yyyy";
dtfi.DateSeparator = "/";
DateTime dt = Convert.ToDateTime(st, dtfi);
ag1 = int.Parse(dt.Year.ToString());
int years = DateTime.Now.Year - ag1;
ag = years.ToString();
TextBox3.Text = ag.ToString();
}