1

我正在尝试获取日期时间字段的时间部分(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"

我在这里做错了什么?

4

3 回答 3

3

第一个选项有什么问题?

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。

于 2013-09-18T18:44:05.827 回答
3

ToString使用存在于 上的覆盖DateTime

Dt.ToString("HH:mm")
于 2013-09-18T18:27:25.427 回答
0

您可以尝试使用Date.ToString: http:
//msdn.microsoft.com/en-us/library/8kb3ddd4 (v=vs.90).aspx

于 2013-09-18T18:29:58.657 回答