vb.net - 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”格式有任何想法吗?
先感谢您,
解决方案
您应该考虑到 DateTime 变量没有格式。它只是一个数字,表示从起始 DateTime.MinValue (1/1/0001) 开始经过的Ticks 。
它没有您使用特定格式解析器构建它的内存。
因此,当您将日期分配给字符串时,就像您在
Label1.Text = myDate
那么您是在询问该日期的ToString表示。没有格式化参数的这个方法的输出是你的语言环境设置决定的。如果要强制输出所需的输出,则需要以您希望输出的格式告诉日期的ToString方法
Label1.Text = myDate.ToString("MM/dd/yyyy")
推荐阅读
- reporting-services - SSRS - 柱形图 - 标签样式
- r - R 代码 - 应用日期格式后返回 NULL 的日期
- javascript - 避免在 TypeScript / JavaScript 代码中删除“forEach”、“filter”等的换行符
- java - 从字符串模式中提取数字
- c++ - Boost Graph Library astar_search 用于隐式图
- python - Pythonic 相当于 Matlab 的 textscan
- simulink - 在 Simulink 中从 XY 图中获取每个值
- javascript - 我可以仅在某些条件下添加 React 输入事件处理程序吗?
- c# - 使用 asp.net 时如何检查我的 pin 是否存在于 SQL 数据库中?
- r - 如何在 R 中专门替换文本字符串中的 \r\n 字符