0

如果以前有人问过这个问题,请指出我正确的方向。我似乎找不到任何对我的 google-ing 技能有用的东西。

我有以下代码,它读入这样的字符串;Outage StartDate: 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 转换为等效的日期对象。

4

1 回答 1

6

Format(sStartTime, "dd/mm/yy hh:mm")由于 sStartTime 是字符串,而不是日期,因此无法正常工作。
您必须做一些额外的工作才能获得正确键入的日期,例如
dStartTime= DateSerial(Mid(sStartTime,10,2),Mid(sStartTime,7,2),Mid(sStartTime,4,2)) + TimeSerial(...) 等...
然后,您将能够正确应用格式功能。

于 2011-09-20T09:54:52.017 回答