首页 > 解决方案 > VB.NET - 将字符串转换为日期时无法强制执行两位数的日期和月份

问题描述

我很难获取一个字符串并将其转换为 vb.net Date 对象,同时强制执行两位数的日期和月份。请考虑以下表格示例,使用今天的日期。(02/01/2019)

    Dim myDate As Date = Date.Now

    Dim myDateString = String.Format("{0:D2}/{1:D2}/{2:D4}", myDate.Month, myDate.Day, myDate.Year)

    myDate = DateTime.ParseExact(myDateString, "MM/dd/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None)

    Label1.Text = myDate 'This will show "2/1/2019"

    Label2.Text = myDateString 'This will show "02/01/2019"

这种情况将 Label1.Text 保留为“2/1/2019”,但 Label2.Text 保留为“02/01/2019”。无论我尝试了什么,从正确格式化的字符串到日期对象的实际转换似乎都会删除这些零。有人对在转换为 Date 对象时如何强制执行“MM/dd/yyyy”格式有任何想法吗?

先感谢您,

标签: vb.netdatedatetimetype-conversion

解决方案


您应该考虑到 DateTime 变量没有格式。它只是一个数字,表示从起始 DateTime.MinValue (1/1/0001) 开始经过的Ticks 。
它没有您使用特定格式解析器构建它的内存。

因此,当您将日期分配给字符串时,就像您在

Label1.Text = myDate

那么您是在询问该日期的ToString表示。没有格式化参数的这个方法的输出是你的语言环境设置决定的。如果要强制输出所需的输出,则需要以您希望输出的格式告诉日期的ToString方法

Label1.Text = myDate.ToString("MM/dd/yyyy")

推荐阅读