我有一个startdate变量,如下所示。
Dim startDate as Datetime
startDate = Convert.ToDateTime(datepicker1.text).ToString("dd-MMM-yyyy")
在即时窗口中,如果我尝试Convert.toDate(datepicker1.text).toString(“dd-MMM-yyyy”) 它显示日期为2009年9月29日 但startDate的值是09/29/2009
我真的不明白为什么在2009年9月29日的startDate变量中未设置该值
有什么想法吗?
答案 0 :(得分:2)
您只是看到同一日期的不同表示 - 您的代码工作得很好。
您的调试窗口显示DateTime
结构的字符串表示形式,方法是调用其ToString
方法,不带任何参数(这是所有调试窗口如何获取任何对象的字符串表示形式),它只是显示不同。
要查看此操作 - 请在即时窗口中尝试此操作:
Convert.ToDateTime(datepicker1.text).ToString()
您将看到在观察窗口中看到的相同结果。
要记住的重要一点是DateTime
是一个抽象概念,可以有许多不同的表示。同样重要的是要记住,仅仅因为您看到相同数据的不同表示,它不会改变基础类型本身。
答案 1 :(得分:0)
请改为尝试:
Dim startDate as Datetime
startDate = DateTime.Parse(datepicker1.text);
您使用的日期格式与美国使用的格式不同,因此可能需要将IFormatProvider
实例作为第二个参数传递给DateTime.Parse
来电。
答案 2 :(得分:0)
日期时间变量存储为自0001年1月1日午夜12点起的100纳秒周期数。当您指定2009年9月29日的值时,它将转换为单个数字。
有很多方法可以表示这个数字。 ToString(“dd-MMM-yyyy”)指定一种格式(2009年9月29日),您的系统有一些默认格式,其中一种格式是09/29/2009。
请记住,如果您使用日期的默认系统格式,不同的用户可能会看到不同的日期格式,具体取决于他们的位置和配置。