VB.NET-将字符串转换为日期时,无法强制执行两位数的日期和月份

时间:2019-02-01 20:59:12

标签: vb.net date datetime type-conversion

在强制执行两位数的日期和月份时,我很难将字符串转换为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”。无论我尝试了什么,似乎从正确格式的String到Date对象的实际转换都将删除这些零。有人对我转换为Date对象时如何实施“ MM / dd / yyyy”格式有任何想法吗?

先谢谢您

1 个答案:

答案 0 :(得分:5)

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

因此,当您像在

中一样为字符串分配日期时
Label1.Text = myDate

然后您要询问该日期的 ToString 表示形式。此方法的输出没有格式参数,取决于您的语言环境设置。如果您想强制执行需要的输出,则需要以所需的格式告诉日期的 ToString 方法

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