为什么我无法将Datetime转换为所需的格式

时间:2011-02-19 08:53:12

标签: c# datetime

这是要求

我将我的字段在我的类文件中声明为Datetime。

我正在接受一个字符串,我想将其转换为Datetime,因为我在课堂上提交的日期是

我总是将其作为

传递
    String date="9999-12-31 00:00:00"

我想将此转换为日期时间,以便输出格式应与给定字符串相同

4 个答案:

答案 0 :(得分:1)

只需更改

DateTime dt = DateTime.ParseExact(strDate, "yyyy-MM-ddTHH:mm:ss", DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None);

DateTime dt = DateTime.Parse(strDate, DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None);

这会将9999-12-31 21:34 PM转换为9999-12-31(如果使用dt.ToString("yyy-MM-dd"))。

请注意,此DateTime将包含小时/分钟等。如果要从DateTime中删除小时/分钟,请使用以下内容:

 dt = new DateTime(dt.Year, dt.Month, dt.Day, 0, 0, 0, dt.Kind);

如果指定格式为DateTime.ParseExact,则输入字符串必须具有此格式才能转换为DateTime。您可以改为使用DateTime.Parse

答案 1 :(得分:1)

很简单,您正在尝试使用格式字符串“yyyy-MM-ddTHH:mm:ss”解析“9999-12-31” - 它不符合,因为它没时间。

编辑:好的,所以你现在把输入更改为“9999-12-31 21:34 PM”,其中的格式不合适 - 没有T,没有秒,还有一个am / pm指示符。为什么不使用实际匹配输入的格式字符串?

但如果“9999-12-31”是输入,您期待输出

答案 2 :(得分:0)

DateTime.ParseExact(
    strDate, 
    "yyyy-MM-dd hh:mm tt", 
    DateTimeFormatInfo.InvariantInfo, 
    DateTimeStyles.None);

答案 3 :(得分:0)

DateTime dt = DateTime.Parse(strDate, DateTimeFormatInfo.InvariantInfo, DateTimeStyles.None);