将日期字符串转换为日期格式

时间:2013-12-11 00:26:46

标签: c# string date

我已尝试过在Stackoverflow上找到的尽可能多的建议,但未获得所需的结果。任何帮助将不胜感激。

我的日期字符串是“04-Dec-2013 14:14:02.143”,我想将其完全转换为DateTime格式。

这是我尝试的最后一个建议:

String MyString;                            
MyString = "04-Dec-2013 14:14:02.143";

DateTime MyDateTime;
MyDateTime = new DateTime();

MyDateTime = DateTime.ParseExact(MyString, "dd-MMM-yyyy HH:mm:ss.fff",
                                           null);

然而,我不断得到“04/12/2013 14:14:02”的不良后果,而不是希望它是“04-Dec-2013 14:14:02.143”。

有什么建议吗?

3 个答案:

答案 0 :(得分:5)

是的,您应该阅读DateTime结构。 它没有附加任何格式信息,它只是一个代表时间点的普通数字。

当您尝试使用string方法获取数据的ToString(format)时,格式会发挥作用。

每次调用ToString时都使用格式字符串,以获得您希望的格式的日期:

var stringDateRespresentation = dateValue.ToString("dd-MMM-yyyy HH:mm:ss.fff");

为了简化操作,您应该在所有周围传递简单的,未格式化的DateTime实例,并仅在向用户显示时使用string方法将其更改为ToString

答案 1 :(得分:1)

@MarcinJuraszek在这个问题上有更好的答案,但它并没有解决不同日期时间模式的问题,因为SO用户将其他问题标记为重复。

        string MyString = "Dec-12-2013 14:14:02.143";
        CultureInfo ukCulture = new CultureInfo("en-GB");
        ukCulture.DateTimeFormat.ShortDatePattern = "MMM-dd-yyyy HH:mm:ss.fff";
        DateTime myDateTime = DateTime.Parse(MyString, ukCulture.DateTimeFormat);
        string QbDate = myDateTime.ToString("dd-MMM-yyyy HH:mm:ss.fff");

解决不同日期时间模式的问题覆盖任何文化的任何日期模式

答案 2 :(得分:0)

如@MarcinJuraszek所述,当您将其转换回字符串时,格式就会出现。您在ParseExact中提到的格式用于解析。即如何解析MyString以创建DateTime对象。

请参阅下面的示例,以便您了解如何使用ParseExact格式字符串。

如果你使用MyDateTime.ToString(“dd-MMM-yyyy HH:ss:mm.fff”);相反(参见我交换了mm和ss)在ParseExact中你会得到“12/4/2013 2:02:14 PM”而不是“12/4/2013 2:14:02 PM”