繁体   English   中英

System.InvalidCastException: '无法将类型为'System.TimeSpan'的对象转换为类型'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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM