Sorting Issue

After getting a correct answer with my sorting issue, so I thought.
Whenever I would input any date with a 1 in it, 1 or 11, the sorted list would put that at the top regardless of the year. After I received an answer and implemented it, I entered 1/11/0000 and 11/1/0000 and it sorted correctly, so I thought I was home free. However, when I went back to some old test data and added a 11/1/0000 date, it shot right to the top again.
Did I miss something?

public class SortbyDate :IComparer<OilChange>
	{
		public int Compare(OilChange x, OilChange y)
		{
			DateTime dateX = Convert.ToDateTime(x.ServiceDate);
			DateTime dateY = Convert.ToDateTime(y.ServiceDate);
			return dateX.CompareTo(dateY);
		}
	}

Added this to the initial class, which seemed to work initially, but then…

Any thought as to what I’m doing or not doing?
The dates are saved as strings.

Parsing dates can be tricky. The system will use the specified date format to try to parse it, but some people write MM/DD/YYYY and some people write DD/MM/YYYY, so it’s not inconceivable that it would get confused in those cases, especially when trying on different machines in different locales. Also, I’ve noticed the .NET DateTime tends to have some trouble with years before 1900 in certain situations.

I highly recommend either (a) not storing the date as a string. Store it as a datetime, or even a timestamp integer, or (b) using a custom defined string definition and writing your own parser to make sure it’s always consistent regardless of locale. If you’re going to use the second method, store it mysql style (YYYY-MM-DD) because then you can use regular string sorting and it will work properly.