C#解析日期和时间

时间:2010-01-07 22:22:25

标签: c#

我在应用程序中有一些代码

DateTime activityDate = DateTime.Parse(tempDate + " " + tempTime);

其中 tempDate 是一个字符串,其值为“2009-12-01”(即yyyy-mm-dd) 和 tempTime 是一个字符串,其值为“23:12:10”(即hh:mm:ss)

首先,有没有更好的方法将这些组合起来获得DateTime,其次是上面的代码可以安全地在任何地区工作(如果没有办法处理这个)

more更接近日期和日期的日期。时间实际上是这种格式“2009-11-26T19:37:56 + 00:00” - 日期/时间的时区部分的格式字符串是什么?

5 个答案:

答案 0 :(得分:10)

如果格式有保证,ParseExact可能更安全(分离模式):

DateTime activityDate = DateTime.ParseExact(tempDate + " " + tempTime,
    "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture);

答案 1 :(得分:6)

您可以使用ParseExact指定日期和时间格式。

e.g:

DateTime dateTime = 
        DateTime.ParseExact("2009-12-01 23:12:10", "yyyy-MM-dd HH:mm:ss", null);

哪个收益率:

Assert.That(dateTime, Is.EqualTo(new DateTime(2009, 12, 1, 23, 12, 10)));

您还可以指定使用此格式的文化,并使用它解析日期和时间,同时保持解析不受处理操作系统文化的影响。
从快速浏览看,似乎没有具有这种确切预定义格式的文化,但通常在框架文化中存在许多标准格式。

答案 2 :(得分:2)

使用ParseExact。有人问过几次...... Link1Link2

答案 3 :(得分:0)

您可以使用ParseExact指定解析的格式。这样就不存在以任何其他方式解析它的风险:

DateTime activityDate = DateTime.ParseExact(tempDate + " " + tempTime, "yyyy'-'MM'-'dd HH':'mm':'ss", CultureInfo.InvariantCulture);

答案 4 :(得分:0)

好像你在乎,另一种选择是:

DateTime activityDateOnly =
    DateTime.ParseExact(tempDate, "yyyy-MM-dd", CultureInfo.InvariantCulture);

TimeSpan activityTime =
    TimeSpan.ParseExact(tempTime, "hh':'mm':'ss", CultureInfo.InvariantCulture);

DateTime activityDate = activityDateOnly + activityTime;

只是一个选择...

相关问题