在 VB6 中将芬兰日期字符串解析为日期类型
我得到一个芬兰日期字符串,如下所示:
29.7.2011 9:27
我正在尝试将此字符串转换为 VB6 中的 Date 对象。我尝试过使用 Format 函数,但它似乎没有吞下日期字符串,或者我做错了什么。这些是我尝试过的一些方法:
theDate = Format(dateString, "General Date")
theDate = Format(dateString, "DD.MM.YYYY MM:HH")
有什么想法吗?谢谢。
I'm getting a Finnish date string that looks like:
29.7.2011 9:27
I'm trying to cast this string to a Date object in VB6. I've tried using the Format function but it doesn't seem to swallow the date string or I'm doing something wrong. These are some approaches I've tried:
theDate = Format(dateString, "General Date")
theDate = Format(dateString, "DD.MM.YYYY MM:HH")
Any ideas? Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以调用 OLE 自动化库(VB6 在内部使用它来处理许多事情,包括类型转换),而不是自己手动解析字符串,这很容易出错,而且如果您必须处理多种日期格式,这会变得混乱。为您进行转换。它可以将 Windows 支持的任何日期/时间格式的字符串转换回原始日期。
下面是使用 DateFromString 函数的示例VarDateFromStr内部函数将格式化的日期/时间字符串转换为日期。
用法示例
将芬兰语日期字符串转换为 日期 并显示它:
在我的机器上(美国英语设置),这显示“7/29/2011 9:27 AM” ,这是正确的日期和时间(7 月 29 日)。
代码
将下面的代码放入项目中的新模块(.bas 文件)中以使用它。该代码当前支持解析美国英语 (en_US) 和芬兰语 (fl_FI) 日期字符串,但您可以根据需要添加对更多区域设置的支持。请参阅Microsoft 分配的区域设置 ID 了解完整信息区域设置 ID 列表。
Rather than manually parsing the string yourself, which is prone to errors, and which gets messy if you have to deal with multiple date formats, you can call out to the OLE Automation library (which VB6 uses internally for many things, including type conversions) to do the conversion for you. It can convert strings in any date/time format supported by Windows back into a raw Date.
Below is an example of a DateFromString function that uses the VarDateFromStr function internally to convert a formatted date/time String into a Date.
Example Usage
Convert a Finnish date string to a Date and display it:
On my machine (US English settings), this displays "7/29/2011 9:27 AM", which is the correct date and time (July 29).
Code
Place the code below into a new module (.bas file) in your project to use it. The code currently supports parsing US English (en_US) and Finnish (fl_FI) date strings, but you can add support for more locales if needed. See Locale IDs assigned by Microsoft for a complete list of locale ID's.
您可以按以下方式使用
DateSerial
和 'TimeSerial'现在您
theDate
是一个 Date 对象,并且可以按照您想要的方式格式化如果您的日期字符串没有用零填充(例如:2.4.2011 而不是 02.04.2011)那么您将需要循环遍历字符串以查找您需要的日期的位和部分。
You can use
DateSerial
and 'TimeSerial' in the following waynow you
theDate
is a Date object and can be formatted the way you wantIf your date string is not padded with zeros (for example: 2.4.2011 instead of 02.04.2011) then you will need to loop through the string to find the bits and parts of the date that you will be needing.
芬兰系统应该能够使用
CDate()
正确解析这些内容。如果您在非芬兰系统上解析它并且格式是固定的,那么您将需要将其拆分为代码:您可能想要添加错误处理和健全性检查,但这是基本思想。
请注意,除非使用非常明确的明确商定的格式,否则在日期与字符串值之间进行转换很容易出错例如ISO 8601,RFC 822 日期和 iCal RFC 2445 标准。
Finnish systems should be able to parse these correctly using
CDate()
. If you're parsing it on a non finnish system and the format is fixed, then you will need to split it up in code:You will probbaly want to add error handling and sanity checking to that but that is the basic idea.
Note that converting dates to and from string values will be error prone unless using very explicit unambigious agreed formats like ISO 8601, RFC 822 dates, and the iCal RFC 2445 standard.
解析充其量是混乱的,但这里有一个更短的示例如何做到这一点
Parsing is messy at best but here is a shorter sample how to do it