[英]Unable to cast object of type 'System.TimeSpan' to type 'System.IConvertible'
[英]System.InvalidCastException: 'Unable to cast object of type 'System.TimeSpan' to type 'System.IConvertible'
我是 .Net 的新手。 我正在尝试计算年龄。 但是低于错误。
System.InvalidCastException: '无法将类型为'System.TimeSpan'的对象转换为类型'System.IConvertible'
下面是代码片段。
static void Main()
{
var dateAndTime = DateTime.Now;
DateTime dateOfBirth = new DateTime(1995, 04, 17);
var date = dateAndTime.Date;
int age = Convert.ToInt32(date - dateOfBirth);
Console.WriteLine("Your age is " + age);
}
这是另一种方式:
static void Main(string[] args)
{
DateTime dateAndTime = DateTime.Now;
DateTime dateOfBirth = new DateTime (1995, 04, 17);
double age = (dateAndTime - dateOfBirth).Days / 365;
Console.WriteLine("Your age is " + Math.Round(age));
}
嗨,欢迎来到 Stackoverflow。 减法运算的结果是一个TimeSpan
对象,它具有您可以使用的属性。
我已经更改了代码以使用 TimeSpan 恢复以下内容,我将给出一些注释。
static void Main(string[] args)
{
var dateAndTime = DateTime.Now;
var dateOfBirth = new DateTime(1995, 04, 17);
var date = dateAndTime.Date;
var ageTimeSpan = date - dateOfBirth;
var age = ageTimeSpan.TotalDays / 365; // TotalDays is a double.
Console.WriteLine($"Your age is {age}");
}
Total Days 是该时间过去所有天数的double
。 你除以一年中的天数得到年数。 因为它是双精度数,所以您也可以得到小数点。 如果您希望将其作为整数,则可以使用var age = (int)ageTimeSpan.TotalDays / 365;
将其转换为 int var age = (int)ageTimeSpan.TotalDays / 365;
结果将只是一个整数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.