VBA使用format()或CDate()将字符串转换为日期的问题



如果以前有人问过这个问题,请给我指出正确的方向。我用谷歌搜索似乎找不到任何有用的东西。

我有下面的代码,它在一个字符串中读像这样;中断开始日期:05/10/11 23:59 EST
并取出日期信息,即05/10/11 23:59

sStartTime = Mid(objItem.Body, 18, 15) ' Extract the start time
Debug.Print "sStartTime after reading: " & sStartTime
sStartTime = Format(sStartTime, "dd/mm/yy hh:mm") ' Format date correctly
Debug.Print "sStartTime after formatting: " & sStartTime

这是我通常得到的输出:

sStartTime after reading:  05/10/11 23:59
sStartTime after formatting: 10/05/11 23:59

但有时它甚至会交换日期和年份:

sStartTime after reading:  14/07/11 23:59
sStartTime after formatting: 11/07/14 23:59

然后CDate完全填充了东西,将日期转换为1931这样的东西…如果能帮助将日期字符串转换为日期对象,我将不胜感激。

===============

编辑:也许应该在最初的帖子中提到这一点。读取字符串背后的想法是将其转换为Date对象,以便创建日历约会。
dStartTime = CDate(sStartTime)

我认为这是问题行,sStartTime = "29/09/11 23:00" (dd/mm/yy hh:mm)和dStartTime = "11/9/2029 11:00:00 PM"

所以很明显有一些转换问题在那里,但我不知道什么格式,我要喂养到CDate函数,以便转向29/09/11 23:00写入等效的日期对象

Format(sStartTime, "dd/mm/yy hh:mm")不能正确工作,因为sStartTime是一个字符串,而不是日期。
您必须做一些额外的工作来获得正确键入的Date,例如
dStartTime= DateSerial(Mid(sStartTime,10,2),Mid(sStartTime,7,2),Mid(sStartTime,4,2)) + TimeSerial(...)
然后,您将能够正确地应用您的格式函数。

相关内容

  • 没有找到相关文章

最新更新