C# 日期时间自定义格式-将AM/PM显示为大写,而不是AM/PM

C# 日期时间自定义格式-将AM/PM显示为大写,而不是AM/PM,c#,vb.net,string,C#,Vb.net,String,我有一个字符串,其中包含:2011年12月14日上午9:45(请注意,“am”不大写) 现在我想用它创建一个datetime变量 我试着看,但它与我想要的正好相反。 我也试过了,但失败了。 到目前为止,我尝试的是: Dim dateNow As DateTime Dim out As String = "14 Dec 2011 9:45 am" dateNow = DateTime.ParseExact(out, "d MMM yyyy HH:mm tt", Nothing) 但遗憾的是,它不

我有一个
字符串
,其中包含:2011年12月14日上午9:45(请注意,“am”不大写)

现在我想用它创建一个
datetime
变量

我试着看,但它与我想要的正好相反。 我也试过了,但失败了。 到目前为止,我尝试的是:

Dim dateNow As DateTime
Dim out As String = "14 Dec 2011 9:45 am"
dateNow = DateTime.ParseExact(out, "d MMM yyyy HH:mm tt", Nothing)

但遗憾的是,它不起作用。有什么想法吗?谢谢。VB.net或C#code也可以。

您可能需要单键
H
,而不是
HH
,因为时间是
datetime
字符串中的一位数。如果您有
HH
的小时,那么您应该有
09
has hour。同样,在上午和下午使用小H,上限为12小时ital
H
表示24小时时间格式,如
1:28 PM
表示
13:28 PM

dateNow = DateTime.ParseExact(out, "d MMM yyyy h:mm tt", Nothing)
下面的描述使用不同的小时选项


您可以了解更多有关
DataTime的自定义格式的信息

请尝试这样给出
2011年12月14日09:45
am在第9小时附近添加0

Dim dateNow As DateTime
Dim out As String = "14 Dec 2011 09:45 am"
dateNow = DateTime.ParseExact(out, "dd MMM yyyy HH:mm tt", Nothing)

签出您还可以使用允许格式的数组,如下所示:

    Dim dateNow As DateTime
    Dim out As String = "14 Dec 2011 12:45 am"
    Dim allowedFormats() As String = {"d MMM yyyy h:mm tt", "dd MMM yyyy h:mm tt", "d MMM yyyy hh:mm tt", "dd MMM yyyy hh:mm tt"}
    dateNow = DateTime.ParseExact(out, allowedFormats, Nothing, Globalization.DateTimeStyles.None)

检查System.FormatException Message是否尝试使用
DateTime.Parse()
?嘿,谢谢..它正在工作..请参见下面的答案..嘿,Adil,谢谢。我尝试过,但它给出了“字符串未被识别为有效的日期时间”。字符串是:“2011年9月21日下午1:28“我不明白为什么会这样,一切似乎都很完美,你需要小h,在上午12小时,下午12小时,检查我的更新答案。嘿,谢谢。它现在起作用了。但你能告诉我简单地把H改成H会发生什么吗?大写的H是24小时,就像下午1:28是下午13:28