首页 文章

改变了迄今为止的天数

提问于
浏览
1

如何在C#中使用DateTime类将天数更改为(年,月和日) . 实际上,我想计算出生日的确切出生日期 . ?年?月......?秒 .

我的代码:

DateTime a = new DateTime(1993, 6, 10, 0, 0, 0);
            DateTime now = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, DateTime.Now.Hour
                ,DateTime.Now.Minute,DateTime.Now.Second);
            TimeSpan b = now - a;
            int c = b.Days;

2 回答

  • 0

    你可以使用NodaTime

    var period = NodaTime.Period.Between(
                    new NodaTime.LocalDateTime(1993, 6, 10, 0, 0), 
                    NodaTime.LocalDateTime.FromDateTime(DateTime.Now) );
    
    Console.WriteLine("{0} {1} {2} {3} {4}",period.Years,period.Months,period.Days,
                                            period.Hours,period.Minutes);
    
  • 3

    我可以看到,没有简单的功能 . 即使用简单的DateTime函数无法做到这一点 . 但是,如果我把它放在代码中,它看起来像这样:

    DateTime birthday = new DateTime(1993, 6, 10);
    DateTime current;
    DateTime nowComparison = DateTime.Now;
    int years = nowComparison.Year - birthday.Year;
    if (nowComparison < birthday.AddYears(years))
        years -= 1;
    current = birthday.AddYears(years); // current is less than a year ago.
    
    int months;
    if(current.Year != nowComparison.Year)
    {
        months = nowComparison.Month + (12 - current.Month);
    }
    else
    {
        months = nowComparison.Month - current.Month;
    }
    if (nowComparison < current.AddMonths(months))
        months -= 1;
    current = current.AddMonths(months); // current is less than a month ago.
    
    int days = nowComparison.Subtract(current).Days;
    current = current.AddDays(days); // current is less than a day ago.
    
    int hours = nowComparison.Subtract(current).Hours;
    current = current.AddHours(hours); // current is less than an hour ago.
    
    int minutes = nowComparison.Subtract(current).Minutes;
    current = current.AddMinutes(minutes); // current is less than a minute ago.
    
    int seconds = nowComparison.Subtract(current).Seconds;
    current = current.AddSeconds(seconds); // current is less than a second ago.
    

相关问题