To format the string for saving in XML:
String.Format("{0:yyyy-MM-dd}", dt);
You should be able to override your default format by updating the culture:
CultureInfo ci = CultureInfo.CreateSpecificCulture(CultureInfo.CurrentCulture.Name); ci.DateTimeFormat.ShortDatePattern = "yyyy-MM-dd";
Thread.CurrentThread.CurrentCulture = ci;
Then whenever you output shortdate it should be the right format
dt.ToShortDateString();
Setting the culture information should allow you to get date directly from the string:
var x = DateTime.Parse("2000-12-30");