我有一个同步的程序。这意味着我需要保存上一个同步日期并检查是否需要同步。
所以,我有这个:
IS.SaveContactsRetrieveDate(DateTime.Now.ToString("dd.MM.yyyy"));
将日期保存到隔离存储。
然后,当我打电话给IF:
DateTime toDate = DateTime.Now;
string contactsRetriveDate = IS.ReadContactsRetriveDate();
if (contactsRetriveDate == "" || DateTime.Compare(toDate, DateTime.Parse(contactsRetriveDate)) == 1)
{
MessageBox.SHow("");
}
问题在于,当用户更改区域代码时,此处失败:
DateTime.Compare(toDate, DateTime.Parse(contactsRetriveDate))
输入错误不正确。
我理解拉脱维亚格式是dd.MM.yyyy
和美国MM/dd/yyyy
- 但我找不到解决方案......
我需要以一种格式解析所有日期时间,因此我可以添加天,周并比较日期。
答案 0 :(得分:2)
您应该以与文化无关的方式序列化和反序列化您的日期(其中"d"
是Standard Date and Time Format Strings的“短日期模式”):
var s = DateTime.Now.ToString("d", CultureInfo.InvariantCulture);
var d = DateTime.Parse(s, CultureInfo.InvariantCulture);
答案 1 :(得分:1)
您可以使用ParseExact
DateTime.ParseExact(datestring, "dd.MM.yyyy", System.Globalization.CultureInfo.InvariantCulture);
你已经知道格式,所以你可以这样做,但要确保字符串格式相同,永远不会改变。
答案 2 :(得分:1)
DateTime toDate = DateTime.Now;
string contactsRetriveDate = IS.ReadContactsRetriveDate();
DateTime contactsRetriveDat = Convert.ToDateTime(contactsRetriveDate);
if (contactsRetriveDate == "" || toDate.CompareTo(contactsRetriveDat)==0)
{
MessageBox.SHow("");
}