我已尝试过在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”。
有什么建议吗?
答案 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”