将字符串转换为Excel日期和时间,使用特定的字符串格式

5
我有一个Excel/VBA宏,可以列出一个目录中的文件。
文件名格式为:yyyy-MM-dd@hh-mm-ss_[description].csv
例如:2013-07-03@22-43-19_my-file.csv 然后我需要将文件名的第一部分转换成Excel日期对象(包括时间戳)。
我发现CDate()函数虽然可以将日期字符串转换为日期对象,但是却不支持“格式”参数,而Format()函数则无法实现该功能,因为它只能将字符串转换为日期对象。
我希望有一个函数,接受一个字符串和一个格式参数,并返回一个Excel Date/Time对象。
是否有这样的函数?
谢谢。

看一下DATESERIAL。 - chuff
1
我知道我可以使用DateSerial(y, m, d) + TimeSerial(h, m, s),但我需要解析我的字符串格式,确定年份、月份等在哪里,提取每个日期子部分的子字符串,然后使用这两个函数。相反,我想要一个更简单的函数,它接受一个字符串和一个输入格式,并返回一个DateTime。 - adrien.pain
从msdn(http://msdn.microsoft.com/en-us/library/aa227484%28v=vs.60%29.aspx)来看,似乎没有任何内置的VBA函数能够满足我的需求。我需要自己编写一个。 - adrien.pain
请原谅我的记忆像瑞士奶酪一样漏洞百出,我指的是Datevalue。还有一个对应的TimeValue函数。 - chuff
@chuff 没问题;-) 但是DateValue()和TimeValue()只能与Excel“预格式化”的格式一起使用,例如MM/DD/YYYY等。它无法使用我的格式,即:yyyy-MM-dd@hh-mm-ss - adrien.pain
1个回答

8

试一下这个:

Function ParseDateTime(dt As String) As Date
   ParseDateTime = DateValue(Left(dt, 10)) + TimeValue(Replace(Mid(dt, 12, 8), "-", ":"))
End Function

好的,谢谢。我会将这个答案标记为已接受的,因为Excel没有提供自己的DateFormat(String date, String format)函数 :-( - adrien.pain

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接