将字符串转换为 Excel 日期和时间,具有特定的字符串格式
Posted
技术标签:
【中文标题】将字符串转换为 Excel 日期和时间,具有特定的字符串格式【英文标题】:Convert String to Excel Date and Time, with specific string format 【发布时间】:2013-07-03 20:48:59 【问题描述】:我有一个 Excel/VBA 宏,可以列出目录中的文件。
文件名格式为:yyyy-MM-dd@hh-mm-ss_[description].csv
例如:2013-07-03@22-43-19_my-file.csv
然后我需要将文件名的第一部分放入 Excel 日期对象(包括时间戳)
我找到了 CDate() 函数,但它不带任何“格式”参数,并且 Format() 函数的工作方式错误,即将字符串转换为日期。
我想要一个函数,它接受一个字符串和一个格式,并返回一个 Excel 日期/时间对象。
是否有专门的功能来做到这一点?
谢谢,
【问题讨论】:
看看 DATESERIAL。 我知道我可以使用 DateSerial(y, m, d) + TimeSerial(h, m, s) 但我需要解析我的字符串格式,确定年份、月份等在哪里。 ..,为日期的每个子部分提取子字符串,然后使用这两个函数。相反,我想要一个更简单的函数,带有一个字符串和一个输入格式,并返回一个 DateTime 似乎,来自 msdn (msdn.microsoft.com/en-us/library/aa227484%28v=vs.60%29.aspx) 没有任何内置的 VBA 函数可以满足我的需要。我得写一个 请原谅我的瑞士奶酪记忆,我的意思是日期值。还有对应的TimeValue函数。 @chuff no pb ;-) 但是 DateValue() 和 TimeValue() 仅适用于 Excel“预格式化”格式,如 MM/DD/YYYY 等。它不适用于我的格式,即:yyyy-MM-dd@hh-mm-ss 【参考方案1】:试试这个:
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) 函数:-(以上是关于将字符串转换为 Excel 日期和时间,具有特定的字符串格式的主要内容,如果未能解决你的问题,请参考以下文章
将Dataset中的列类型转换为python中具有特定格式的日期时间类型时出错
将我的日期列从 Excel 导入/转换为 SQL Server 中的日期时间数据类型?