Quantcast
Viewing all articles
Browse latest Browse all 46

Answer by John A for Difference in months between two dates

This is in response to Kirk Woll's answer. I don't have enough reputation points to reply to a comment yet...

I liked Kirk's solution and was going to shamelessly rip it off and use it in my code, but when I looked through it I realized it's way too complicated. Unnecessary switching and looping, and a public constructor that is pointless to use.

Here's my rewrite:

public class DateTimeSpan {    private DateTime _date1;    private DateTime _date2;    private int _years;    private int _months;    private int _days;    private int _hours;    private int _minutes;    private int _seconds;    private int _milliseconds;    public int Years { get { return _years; } }    public int Months { get { return _months; } }    public int Days { get { return _days; } }    public int Hours { get { return _hours; } }    public int Minutes { get { return _minutes; } }    public int Seconds { get { return _seconds; } }    public int Milliseconds { get { return _milliseconds; } }    public DateTimeSpan(DateTime date1, DateTime date2) {        _date1 = (date1 > date2) ? date1 : date2;        _date2 = (date2 < date1) ? date2 : date1;        _years = _date1.Year - _date2.Year;        _months = (_years * 12) + _date1.Month - _date2.Month;        TimeSpan t = (_date2 - _date1);        _days = t.Days;        _hours = t.Hours;        _minutes = t.Minutes;        _seconds = t.Seconds;        _milliseconds = t.Milliseconds;    }    public static DateTimeSpan CompareDates(DateTime date1, DateTime date2) {        return new DateTimeSpan(date1, date2);    }}

Usage1, pretty much the same:

void Main(){    DateTime compareTo = DateTime.Parse("8/13/2010 8:33:21 AM");    DateTime now = DateTime.Parse("2/9/2012 10:10:11 AM");    var dateSpan = new DateTimeSpan(compareTo, now);    Console.WriteLine("Years: "+ dateSpan.Years);    Console.WriteLine("Months: "+ dateSpan.Months);    Console.WriteLine("Days: "+ dateSpan.Days);    Console.WriteLine("Hours: "+ dateSpan.Hours);    Console.WriteLine("Minutes: "+ dateSpan.Minutes);    Console.WriteLine("Seconds: "+ dateSpan.Seconds);    Console.WriteLine("Milliseconds: "+ dateSpan.Milliseconds);}

Usage2, similar:

void Main(){    DateTime compareTo = DateTime.Parse("8/13/2010 8:33:21 AM");    DateTime now = DateTime.Parse("2/9/2012 10:10:11 AM");    Console.WriteLine("Years: "+ DateTimeSpan.CompareDates(compareTo, now).Years);    Console.WriteLine("Months: "+ DateTimeSpan.CompareDates(compareTo, now).Months);    Console.WriteLine("Days: "+ DateTimeSpan.CompareDates(compareTo, now).Days);    Console.WriteLine("Hours: "+ DateTimeSpan.CompareDates(compareTo, now).Hours);    Console.WriteLine("Minutes: "+ DateTimeSpan.CompareDates(compareTo, now).Minutes);    Console.WriteLine("Seconds: "+ DateTimeSpan.CompareDates(compareTo, now).Seconds);    Console.WriteLine("Milliseconds: "+ DateTimeSpan.CompareDates(compareTo, now).Milliseconds);}

Viewing all articles
Browse latest Browse all 46

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>