转换字符串到日期时间(24 小时格式)不匹配
Conversion String to Datetime (24 hour format) is not match
我有一个字符串10/13/2016 21:42
Dim ETAtime1 As String = Convert.ToDateTime("10/13/2016 21:42").ToString("MM/dd/yyyy HH:mm")
'result is 10/13/2016 21:42
我希望结果是 10/13/2016 21:42
(24 小时格式),如上面的字符串。但是为什么我像下面这样转换后变成了12小时制呢?
Dim ETAtime As DateTime = DateTime.ParseExact(ETAtime1, "MM/dd/yyyy HH:mm", Nothing)
'result is 10/13/2016 09:42
如何解决,变成09:42而不是21:42?我需要 DateTime 类型的数据而不是字符串。
试试这个:
dddd, MMMM d, yyyy HH:mm:ss tt"
DateTime 对象没有 "format",可以将其视为实际保存的日期和时间。将该信息存储在 DateTime 对象中可以让您对其执行 mathematical/logical 操作。如何向用户显示 DateTime 小时由您决定。 ToString 方法可以显示这些小时格式中的任何一种,具体取决于您传递给它的格式字符串...例如:
Dim ETAtime1 As String = Convert.ToDateTime("10/13/2016 21:42").ToString("MM/dd/yyyy HH:mm")
Dim ETAtime As DateTime = DateTime.ParseExact(ETAtime1, "MM/dd/yyyy HH:mm", Nothing)
MsgBox(ETAtime.ToString("HH:mm"))
'Outputs 21:42
MsgBox(ETAtime.ToString("h:mm"))
'Outputs 9:42
此行获取您的字符串 10/13/2016 21:42
并使用提供的格式对其进行解析。这在日期字符串的格式不明确时很有用,例如 06/05/2016
,即使这可能表示 June 5th 或 May 6th,但您 知道 在我的示例中是 day/month,5 月 6th。有关详细信息,请参阅 DateTime.ParseExact。
Dim ETAtime As DateTime = DateTime.ParseExact(ETAtime1, "MM/dd/yyyy HH:mm", Nothing)
此方法的结果是 DateTime,而不是字符串。
'result is 10/13/2016 09:42
因此结果是有效的 - 取决于您检查它的方式 - 但是没有 AM/PM
指标。它已经是一个日期时间。 ETAtime上的进一步操作可以证明这一点。
Dim ETAtime1 As String = Convert.ToDateTime("10/13/2016 21:42").ToString("MM/dd/yyyy HH:mm")
Dim ETAtime As DateTime = DateTime.ParseExact(ETAtime1, "MM/dd/yyyy HH:mm", Nothing)
Console.WriteLine("{0:MM/dd/yyyy HH:mm}", ETAtime)
Console.WriteLine("{0:MM/dd/yyyy hh:mm}", ETAtime)
Console.WriteLine("{0:MM/dd/yyyy hh:mm tt}", ETAtime)
输出
10/13/2016 21:42
10/13/2016 09:42
10/13/2016 09:42 PM
你的代码确实没有问题。
我的IDE(Visual Studio2012)在调试10/13/2016 09:42 PM
时以这种格式显示日期。我位于美国。显示的内容应基于您的区域设置。看到你的屏幕截图会很有趣。
我有一个字符串10/13/2016 21:42
Dim ETAtime1 As String = Convert.ToDateTime("10/13/2016 21:42").ToString("MM/dd/yyyy HH:mm")
'result is 10/13/2016 21:42
我希望结果是 10/13/2016 21:42
(24 小时格式),如上面的字符串。但是为什么我像下面这样转换后变成了12小时制呢?
Dim ETAtime As DateTime = DateTime.ParseExact(ETAtime1, "MM/dd/yyyy HH:mm", Nothing)
'result is 10/13/2016 09:42
如何解决,变成09:42而不是21:42?我需要 DateTime 类型的数据而不是字符串。
试试这个:
dddd, MMMM d, yyyy HH:mm:ss tt"
DateTime 对象没有 "format",可以将其视为实际保存的日期和时间。将该信息存储在 DateTime 对象中可以让您对其执行 mathematical/logical 操作。如何向用户显示 DateTime 小时由您决定。 ToString 方法可以显示这些小时格式中的任何一种,具体取决于您传递给它的格式字符串...例如:
Dim ETAtime1 As String = Convert.ToDateTime("10/13/2016 21:42").ToString("MM/dd/yyyy HH:mm")
Dim ETAtime As DateTime = DateTime.ParseExact(ETAtime1, "MM/dd/yyyy HH:mm", Nothing)
MsgBox(ETAtime.ToString("HH:mm"))
'Outputs 21:42
MsgBox(ETAtime.ToString("h:mm"))
'Outputs 9:42
此行获取您的字符串 10/13/2016 21:42
并使用提供的格式对其进行解析。这在日期字符串的格式不明确时很有用,例如 06/05/2016
,即使这可能表示 June 5th 或 May 6th,但您 知道 在我的示例中是 day/month,5 月 6th。有关详细信息,请参阅 DateTime.ParseExact。
Dim ETAtime As DateTime = DateTime.ParseExact(ETAtime1, "MM/dd/yyyy HH:mm", Nothing)
此方法的结果是 DateTime,而不是字符串。
'result is 10/13/2016 09:42
因此结果是有效的 - 取决于您检查它的方式 - 但是没有 AM/PM
指标。它已经是一个日期时间。 ETAtime上的进一步操作可以证明这一点。
Dim ETAtime1 As String = Convert.ToDateTime("10/13/2016 21:42").ToString("MM/dd/yyyy HH:mm")
Dim ETAtime As DateTime = DateTime.ParseExact(ETAtime1, "MM/dd/yyyy HH:mm", Nothing)
Console.WriteLine("{0:MM/dd/yyyy HH:mm}", ETAtime)
Console.WriteLine("{0:MM/dd/yyyy hh:mm}", ETAtime)
Console.WriteLine("{0:MM/dd/yyyy hh:mm tt}", ETAtime)
输出
10/13/2016 21:42
10/13/2016 09:42
10/13/2016 09:42 PM
你的代码确实没有问题。
我的IDE(Visual Studio2012)在调试10/13/2016 09:42 PM
时以这种格式显示日期。我位于美国。显示的内容应基于您的区域设置。看到你的屏幕截图会很有趣。