我有一个字符串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类型数据而不是字符串。
答案 0 :(得分:2)
DateTime对象没有“格式”,认为它只是保存日期和时间实际上是什么。将该信息存储在DateTime对象中是允许您对其执行数学/逻辑运算的原因。如何向用户显示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
答案 1 :(得分:1)
此行使用您的字符串Instant ajustedTime = Instant.now().plus(yourDurationInstance);
并使用提供的格式对其进行解析。当日期字符串采用模糊格式(例如10/13/2016 21:42
)时,这很有用,即使这可能代表6月5日 th 或5月6日 th ,但是在我的例子中,知道它的日/月,5月6日 th 。有关详情,请参阅DateTime.ParseExact。
06/05/2016
此方法的结果是 DateTime ,而不是字符串。
Dim ETAtime As DateTime = DateTime.ParseExact(ETAtime1, "MM/dd/yyyy HH:mm", Nothing)
所以结果是有效的 - 取决于你如何检查 - 但是没有'result is 10/13/2016 09:42
指标。它已经是一个DateTime。对ETAtime的进一步操作可以证明这一点。
AM/PM
输出
2016/10/13 21:42
10/13/2016 09:42
10/13/2016 09:42 PM
您的代码确实没有问题。
我的IDE(Visual Studio 2012)在调试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)
时以此格式显示日期。我位于美国。显示的内容应基于您的区域设置。看到你的截图会很有趣。
答案 2 :(得分:0)
试试这个:
dddd, MMMM d, yyyy HH:mm:ss tt"