简单年龄计算器基于C#中的出生日期

这个问题在这里已经有了答案:

  • 我如何用C#计算某人的年龄? 64个答案

  • 与评论相反, TimeSpan在这里并没有帮助你,因为一年不是固定的时间。 这反过来导致你表达的目标确实很奇怪。 您实际上不应该将日期表示为小数,前两位数字为月份,第三位和第四位数字为天数。 时间就是这样。 (例如,2014.0131与2014.0201之间的差异远大于2014.0130与2014.0131之间的差异)。

    用年,月,日来表示年龄会更好。 我的野田时间库使得这非常简单:

    LocalDate birthday = new LocalDate(1976, 6, 19); // For example
    LocalDate today = LocalDateTime.FromDateTime(DateTime.Now).Date; // See below
    Period period = Period.Between(birthday, today);
    Console.WriteLine("You are {0} years, {1} months, {2} days old",
                      period.Years, period.Months, period.Days);
    

    如果你想确定一些年份,你可以决定使用period.Years ,或者可能根据period.Months对结果进行四舍五入。

    但是,我建议不要在生产代码中使用DateTime.Now 。 在Noda Time中,我们有一个IClock接口,代表“一种即时获取当前时间的方法”,在主要程序FakeClock实现SystemClock并在测试程序FakeClock实现FakeClock 。 你的代码会接受一个IClock (可能有依赖注入),然后用它来确定你感兴趣的任何时区的当前日期。这样,你可以在不改变计算机时钟的情况下为任何你喜欢的情况编写测试。 一般来说,这是处理时间相关任务的一种好方法,IMO。


    在我们的框架中,我们使用以下方法:

        /// <summary>
        /// Calculates the age at the specified date.
        /// </summary>
        /// <param name="dateOfBirth">The date of birth.</param>
        /// <param name="referenceDate">The date for which the age should be calculated.</param>
        /// <returns></returns>
        public static int Age(DateTime dateOfBirth, DateTime referenceDate)
        {
            int years = referenceDate.Year - dateOfBirth.Year;
            dateOfBirth = dateOfBirth.AddYears(years);
            if (dateOfBirth.Date > referenceDate.Date)
                years--;
            return years;
        }
    
        /// <summary>
        /// Calculates the age at this moment.
        /// </summary>
        /// <param name="dateOfBirth">The date of birth.</param>
        /// <returns></returns>
        public static int Age(DateTime dateOfBirth)
        {
            return Age(dateOfBirth, DateTime.Today);
        }
    

    在这里,我找到了我的问题的一个答案,我使用LastIndexOf删除某个字符后的所有字符串,它是点(。),但在此之前,我将float转换为string

    这是准确的,尝试一下。 :)

       static void Main(string[] args)
        {
            string year, month, day = string.Empty;
            Console.WriteLine("Enter your Birthdate:");
            Console.WriteLine("Year :");
            year = Console.ReadLine();
            Console.WriteLine("Month :");
             month = Console.ReadLine();
            Console.WriteLine("Day :" );
            day = Console.ReadLine();
            try
            {
                DateTime date = Convert.ToDateTime(year + "-" + month + "-" + day);
                 var bday = float.Parse(date.ToString("yyyy.MMdd"));
                 var now = float.Parse(DateTime.Now.ToString("yyyy.MMdd"));
                 if (now < bday)
                 {
                     Console.WriteLine("Invalid Input of date");
                     Console.ReadLine();
    
                 }
                 string age = (now - bday).ToString(); 
                 Console.WriteLine("Your Age is " + (age.Substring(0, age.LastIndexOf('.'))));
                 Console.ReadLine();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
                Console.ReadLine();
            }
    
    
    
    
    
            }
    
    链接地址: http://www.djcxy.com/p/54353.html

    上一篇: Simple Age Calculator base on date of birth in C#

    下一篇: Age in years from DateTime (Date of birth)