如果之前有人问过,请指出正确的方向。我似乎找不到任何与我的谷歌技能有用的东西。
我有以下代码,它读入这样的字符串;停电开始日期: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”< / p>
所以很明显会出现一些转换问题,但是我不知道我想用什么格式来转换CDate函数才能转向 29/09/11 23:00进入等效日期对象。
答案 0 :(得分:5)
Format(sStartTime, "dd/mm/yy hh:mm")
无法正常工作,因为sStartTime是一个字符串,而不是日期
您必须做一些额外的工作才能获得正确输入的日期,例如
dStartTime= DateSerial(Mid(sStartTime,10,2),Mid(sStartTime,7,2),Mid(sStartTime,4,2)) + TimeSerial(...)
等等...
那么,您将能够正确应用您的格式功能。