日期时间字段上的String.Format

时间:2013-09-18 18:25:25

标签: vb.net datetime string-formatting

我正在尝试获取日期时间字段的时间部分(24h)

Dim Dt as datetime =#1/1/1900 8:00:00 PM#
Dim Str as string = String.Format(Dt, "HH:mm")

返回"1/1/1900 8:00:00 pm"

我在这里做错了什么?

3 个答案:

答案 0 :(得分:3)

使用ToString上存在的被覆盖的DateTime

Dt.ToString("HH:mm")

答案 1 :(得分:3)

  

第一个选项出了什么问题?

String.Format()方法有5个重载,其中没有一个有两个参数可以将DateTime作为第一个参数。接下来会发生什么取决于您希望使用Visual Basic的方式。您可以将它放在源代码文件的顶部:

 Option Strict On

并且VB.NET编译器对你的代码很挑剔。您现在将收到编译时错误:

  

重载解析失败,因为无法使用这些参数调用可访问的“格式”

显然你已经把它拿走了,所以它试图用你给它的叶子做茶。 String.Format()只有一个仍然可以调用的重载,它是Format(String,Object)重载。打算写这样的代码:

 Dim str = String.Format("The time is {0:HH:mm}", Dt)

一种称为复合格式的功能。在您的情况下,只有VB.NET编译器首先自动将DateTime转换为字符串时,才能调用此方法。实际上你会打电话:

 Dim str = String.Format("1/1/1900 8:00:00 pm", "HH:mm")

这不符合你的期望。

通常最好通过始终打开Option Strict来学习VB.NET编码。只有当你完全了解语言以便在这样的事故中幸存下来时才能将其关闭。您可以告诉Visual Studio 始终打开选项。工具+选项,项目和解决方案,VB默认值并将选项严格选择更改为开。

答案 2 :(得分:0)