Bạn có thể làm điều này trong Noda Time khá dễ dàng:
using System;
using NodaTime;
class Test
{
static void Main()
{
ShowAge(1988, 9, 6);
ShowAge(1991, 3, 31);
ShowAge(1991, 2, 25);
}
private static readonly PeriodType YearMonth =
PeriodType.YearMonthDay.WithDaysRemoved();
static void ShowAge(int year, int month, int day)
{
var birthday = new LocalDate(year, month, day);
// For consistency for future readers :)
var today = new LocalDate(2012, 2, 3);
Period period = Period.Between(birthday, today, YearMonth);
Console.WriteLine("Birthday: {0}; Age: {1} years, {2} months",
birthday, period.Years, period.Months);
}
}
Làm nó với chỉ hỗ trợ DateTime
NET của sẽ có thể, nhưng bạn sẽ phải làm số học cho mình, về cơ bản. Và nó gần như chắc chắn sẽ không rõ ràng. Không phải là tôi thiên vị hoặc bất cứ điều gì :)
Nguồn
2012-02-03 12:04:21
bạn đã kiểm tra TimeSpan struct ??? –
@Ravi: Bạn có nghĩ về việc liệu điều đó có thể xác định chính xác số tháng và năm giữa hai ngày không? –
không, nghĩ đến việc đề xuất NodaTime, nhưng khi "daemon" còn sống trên SO, thì tại sao phải lo lắng, bạn sẽ nghĩ ra một cách rõ ràng :) –