提问人:Ann 提问时间:11/17/2023 最后编辑:Joel CoehoornAnn 更新时间:11/17/2023 访问量:49
从 DateTime 到 String 到 DateTime 的转换
From DateTime to String to DateTime Conversion
问:
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
有人会帮我转换这个吗?
答:
你想要这个:
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")
在这里查看它们的工作:
请注意,最终变量声明为字符串。 值本身没有任何类型的文本格式。只有当它们被转换为字符串时,你才能选择一种格式。DateTime
考虑到这一点,通常最好尽可能长时间地将内容保留为未格式化的 DateTime 值,并等待转换为格式化字符串,直到最后一刻。(此建议也适用于数值类型)。
评论
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”的输出。
希望这对你有所帮助。😉
如果您的实际目标是简单地从值中删除时间部分,则无需进行任何转换。Date
Dim dateWithTime = #6/2/2023 03:57:00 PM#
Dim dateWithoutTime = dateWithTime.Date
a 的属性返回一个时间归零的新属性,因此实际上只返回日期。Date
DateTime
DateTime
如果您不知道,.NET 类型和 VB 类型是一回事 - 就像 .NET 和 VB 是一回事一样 - 并且它们始终包含日期和时间。为了仅表示日期,您将时间归零到午夜,这似乎是您要做的事情。NET 最近添加了 和 类型,因此您可以在某些情况下使用它们。 虽然 .NET 如此根深蒂固,但在许多情况下,即使您只想表示日期而没有时间,您仍然需要使用它。DateTime
Date
Int32
Integer
DateOnly
TimeOnly
DateTime
编辑:
我刚刚意识到我在重复乔尔的一些建议,所以我希望他的答案比我的答案更可取。不过,我会留下我的,因为希望一些解释可能会有所帮助。
评论