将字符串转换为 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 日期和时间,具有特定的字符串格式的主要内容,如果未能解决你的问题,请参考以下文章

Python将字符串转换为int [重复]

将Dataset中的列类型转换为python中具有特定格式的日期时间类型时出错

将我的日期列从 Excel 导入/转换为 SQL Server 中的日期时间数据类型?

将整数转换为日期字符串

Python/pandas 导出到 excel 转换日期时间 (HH:mm)

无法将特定的日期时间字符串转换为日期