在强制执行两位数的日期和月份时,我很难将字符串转换为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”格式有任何想法吗?
先谢谢您
答案 0 :(得分:5)
您应该考虑DateTime变量没有格式。它只是一个数字,表示从开始的DateTime.MinValue(1/1/0001)开始经过的Ticks。
它没有使用特定格式解析器构建的内存。
因此,当您像在
中一样为字符串分配日期时Label1.Text = myDate
然后您要询问该日期的 ToString 表示形式。此方法的输出没有格式参数,取决于您的语言环境设置。如果您想强制执行需要的输出,则需要以所需的格式告诉日期的 ToString 方法
Label1.Text = myDate.ToString("MM/dd/yyyy")