从 DateTime 到 String 到 DateTime 的转换

From DateTime to String to DateTime Conversion

提问人:Ann 提问时间:11/17/2023 最后编辑:Joel CoehoornAnn 更新时间:11/17/2023 访问量:49

问:

Date purchaseDate = #6/2/2023 03:57:00 PM#
Dim purchaseDT As String = purchaseDate.ToShortDateString()
Dim purchaseDate As DateTime = DateTime.ParseExact(purchaseDT, "MM/dd/yyyy", Globalization.CultureInfo.InvariantCulture)

我的目标是将其转换为#6/2/2023 03:57:00 PM#06/02/2023 12:00:00 AM

有人会帮我转换这个吗?

vb.net

评论


答:

4赞 Joel Coehoorn 11/17/2023 #1

你想要这个:

Dim purchaseDate As String = (New DateTime(2023, 6, 2, 15, 57,0)).Date.ToString("MM/dd/yyyy hh:mm:ss tt")

或者给定初始值:purchaseDate

Dim purchaseDate As Date = #6/2/2023 03:57:00 PM#
Dim result As String = purcaseDate.Date.ToString("MM/dd/yyyy hh:mm:ss tt")

在这里查看它们的工作:

https://dotnetfiddle.net/kAzY0L

请注意,最终变量声明为字符串。 值本身没有任何类型的文本格式。只有当它们被转换为字符串时,你才能选择一种格式。DateTime

考虑到这一点,通常最好尽可能长时间地将内容保留为未格式化的 DateTime 值,并等待转换为格式化字符串,直到最后一刻。(此建议也适用于数值类型)。

评论

1赞 djv 11/17/2023
不错的方法,DateTime.Date 是关键,因为它去除了时间,因此生成的实例有凌晨 12 点的时间。
-1赞 Danilo Flores 11/17/2023 #2
Dim purchaseDate As DateTime = #6/2/2023 03:57:00 PM#
Dim purchaseDateString As String = purchaseDate.ToString("MM/dd/yyyy")
Dim formattedPurchaseDate As DateTime = DateTime.ParseExact(purchaseDateString, "MM/dd/yyyy", CultureInfo.InvariantCulture)

Console.WriteLine(formattedPurchaseDate.ToString("MM/dd/yyyy 12:00:00 AM"))

我使用 ToString(“MM/dd/yyyy”) 方法将 DateTime 转换为格式为“MM/dd/yyyy”的字符串。然后,我使用 DateTime.ParseExact 将格式化的字符串分析回 DateTime 对象。

因此,我使用 ToString(“MM/dd/yyyy 12:00:00 AM”) 将生成的 DateTime 对象格式化为所需的格式,包括设置为午夜的时间部分。 这应该为您提供您指定的格式为“06/02/2023 12:00:00 AM”的输出。

希望这对你有所帮助。😉

1赞 jmcilhinney 11/17/2023 #3

如果您的实际目标是简单地从值中删除时间部分,则无需进行任何转换。Date

Dim dateWithTime = #6/2/2023 03:57:00 PM#
Dim dateWithoutTime = dateWithTime.Date

a 的属性返回一个时间归零的新属性,因此实际上只返回日期。DateDateTimeDateTime

如果您不知道,.NET 类型和 VB 类型是一回事 - 就像 .NET 和 VB 是一回事一样 - 并且它们始终包含日期和时间。为了仅表示日期,您将时间归零到午夜,这似乎是您要做的事情。NET 最近添加了 和 类型,因此您可以在某些情况下使用它们。 虽然 .NET 如此根深蒂固,但在许多情况下,即使您只想表示日期而没有时间,您仍然需要使用它。DateTimeDateInt32IntegerDateOnlyTimeOnlyDateTime

编辑:

我刚刚意识到我在重复乔尔的一些建议,所以我希望他的答案比我的答案更可取。不过,我会留下我的,因为希望一些解释可能会有所帮助。