如何将短日期字符串转换回DateTime对象?

时间:2009-12-15 07:58:52

标签: c# string datetime

我有2个DateTime对象,在使用ToShortDateString()函数后保存到文件中;字符串看起来像“12/15/2009”。我现在卡在这一部分,我想用这些字符串初始化DateTime对象,以便我可以比较日期日期之间的时间跨度。任何帮助表示赞赏。

5 个答案:

答案 0 :(得分:7)

你可以尝试

DateTime date = DateTime.ParseExact("12/15/2009", "MM/dd/yyyy", null);

看看

答案 1 :(得分:2)

假设您正在以字符串格式回读文件中的日期

string date1 = "28/12/2009"; //this will be from your file
string date2 = "29/12/2009"; //this will be from your file
DateTime d1 = DateTime.ParseExact(date1,"dd/MM/yyyy", null);
DateTime d2 = DateTime.ParseExact(date2, "dd/MM/yyyy", null);
TimeSpan t1 = d2.Subtract(d1);

答案 2 :(得分:1)

在处理DateTime / string转换时,我通常会尝试坚持这一点:

  • 以文本格式保存日期时,请明确格式化。优选地采用标准化格式(例如ISO 8601)。
  • 在阅读日期时,使用相同的明确定义的格式将其解析为DateTime对象。

这样,在日期格式与您的日期格式不同的地方使用时,或者如果文件是在一个语言环境中创建,然后在另一个语言环境中进行解析,则代码不会失败。

private static string DateToString(DateTime input)
{
    return input.ToString("yyyy-MM-dd");
}

private static DateTime StringToDate(string input)
{
    return DateTime.ParseExact(input, "yyyy-MM-dd", CultureInfo.InvariantCulture);
}

答案 3 :(得分:0)

你试过DateTime.Parse(str)吗?

答案 4 :(得分:0)

提取年,月,日,然后使用smth:

var dt = new DateTime(Year,Month,Day)

或者crete一个扩展方法来转换回dateTime这种字符串,但一般来说,这个扩展名的主体就像这样。