日期时间自定义格式 - 将上午/下午显示为大写,而不是上午/下午

时间:2014-02-24 05:56:47

标签: c# vb.net string

我有一个string,其中包含: 2011年12月14日上午9:45 (注意“AM”未大写“)

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

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

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#代码就可以了..

3 个答案:

答案 0 :(得分:7)

您可能需要单H而不是HH,因为小时是datetime字符串中的单个数字。如果您有09小时,则HH应该有小时。使用AM和PM的小小时为12小时,大写H 24小时时间格式,如1:28 PM13:28 PM

dateNow = DateTime.ParseExact(out, "d MMM yyyy h:mm tt", Nothing)

使用下面显示的小时的不同选项进行说明。

enter image description here

您可以详细了解DataTime here的自定义格式。

答案 1 :(得分:2)

尝试这样做14 Dec 2011 09:45在小时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)

结帐Custom Date and Time Format Strings

答案 2 :(得分:0)

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

    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)