2

我有一个同步的程序。这意味着我需要保存上次同步日期并检查它是否需要同步。

所以,我有这个:

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- 但我找不到解决方案......

我需要以一种格式解析所有日期时间,因此我可以添加天数、周数并比较日期。

4

3 回答 3

2

您应该以与文化无关的方式序列化和反序列化您的日期(标准日期和时间格式字符串"d"的“短日期模式”在哪里):

var s = DateTime.Now.ToString("d", CultureInfo.InvariantCulture);
var d = DateTime.Parse(s, CultureInfo.InvariantCulture);
于 2013-07-15T10:13:04.343 回答
1

您可以使用 ParseExact

DateTime.ParseExact(datestring, "dd.MM.yyyy", System.Globalization.CultureInfo.InvariantCulture);

你已经知道格式,所以你可以这样做,但要确保字符串是相同的格式并且永远不会改变。

于 2013-07-15T09:56:56.980 回答
1

你可以试试这个:

 DateTime toDate = DateTime.Now;

                string contactsRetriveDate = IS.ReadContactsRetriveDate();
                DateTime contactsRetriveDat = Convert.ToDateTime(contactsRetriveDate);
                if (contactsRetriveDate == "" || toDate.CompareTo(contactsRetriveDat)==0)
                {
                    MessageBox.SHow("");
                }
于 2013-07-15T10:10:29.137 回答