我正在尝试获取日期时间字段的时间部分(24 小时)
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"
我在这里做错了什么?
我正在尝试获取日期时间字段的时间部分(24 小时)
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"
我在这里做错了什么?
第一个选项有什么问题?
String.Format() 方法有 5 个重载,它们都没有两个可以将 DateTime 作为第一个参数的参数。接下来会发生什么取决于您喜欢以哪种方式使用 Visual Basic。您可以将其放在源代码文件的顶部:
Option Strict On
并且 VB.NET 编译器对您的代码很挑剔。你现在会得到一个编译时错误:
重载解析失败,因为无法使用这些参数调用可访问的“格式”
显然你把它关掉了,所以它试图用你给它的叶子泡茶。仍然可以调用 String.Format() 的一个重载,它是 Format(String, Object) 重载。With 旨在编写如下代码:
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始终打开该选项。Tools + Options, Projects and Solution, VB Defaults 并将 Option Strict 选择更改为 On。
ToString
使用存在于 上的覆盖DateTime
:
Dt.ToString("HH:mm")
您可以尝试使用Date.ToString
: http:
//msdn.microsoft.com/en-us/library/8kb3ddd4 (v=vs.90).aspx