使用CDate()或DateTime.TryParse(),以下两个日期将使用不同的Kind属性进行转换。
Dim date1 As Date
Dim date2 As Date
date1 = CDate("1/29/2014 2:00 AM")
date2 = CDate("1/29/2014 -7:00")
Debug.WriteLine("date1: " & date1.ToString & ", date2: " & date2.ToString)
Debug.WriteLine(String.Format("Kind {0}, {1}", date1.Kind, date2.Kind.ToString))
输出
date1: 1/29/2014 2:00:00 AM, date2: 1/29/2014 2:00:00 AM
Kind: Unspecified, Local
我的系统设置为东部标准时间(-5小时UTC),因此解释了凌晨2点,但为什么date2转换为本地时间和日期1未指定?
答案 0 :(得分:2)
“ - 7:00”并不代表你(可能)认为它的作用。它当然不可能是时间,因为时间永远不会消极。但是CDate()仍然可以在不抛出异常的情况下烘焙它,日期字符串可以包含签名的UTC偏移量。这可能是消极的。
因此字符串可以代表UTC-7时区的午夜。由于您居住在UTC-5,因此明确地转变为当地时间凌晨2点。
与CDate(“1/29/2014 +7:00”)比较,也是午夜,但在地球的另一端。