2009-10-12 92 views
1

我有一个函数可以解析包含日期(和/或时间)的字符串,例如“2009-12-10”。我从短日期模式获得年月日订单。当通过字符串时,我使用Char.IsSeparator(ch)来确定数字何时结束。区域不可知论者Char.IsSeparator(ch)?

但是现在在韩国的情况下,它似乎Char.IsSeparator(CH)收益上的分隔符错误。有没有办法知道数字之间的字符是分隔符而不管区域设置?

(我也解析更自由包含像“* 5月20日200 * 9”这样的分离Char.IsAlphaNum()将无法​​工作,如我不知道的内容基本的东西串)

输入示例:“20.10.2009”“2009-05-20”“2009年5月20日”“20.05.2009 10:00 AM”“1/1/2009”(在新加坡其D/M/Y in美国它是M/D/Y“)”Tisdag,1月1日1962“(所有字符串本地化)

输出将等于尽可能填充日期时间实例(尽管我们使用我们自己的类型)

韩国人似乎在时间前面有几个字符,并且作为分隔符,看起来符号根据字符串中的位置而不同。

+0

Couldn框架忧你采取相反的方法,并使用正确的区域进行比较吗? – 2009-10-12 09:59:01

+0

你能提供一些输入和预期输出的例子吗? – 2009-10-12 11:36:38

回答

0

你有什么理由需要手动解析字符串吗?

如果使用的是内置的日期/时间分析方法 - ParseParseExactTryParseTryParseExact - 那么你可以传递所需的区域性特定格式信息,并让有关分离等

+0

我认为用免费的手和完全理解这个格式化模块我现在可以做到这一点,但是当我这样做时主要是移植一个非托管的C代码C#。特别是由于格式需要与以前完全相同(此例程由其他人使用等)。 – 2009-10-12 10:15:24

+0

你说得对。我只是扔掉了东西,并使用标准的.NET方法重写了它。感谢您向我展示光:) – 2009-10-13 07:39:07

2

如果您使用当前的短格式选取格式,您可能也可以通过DateTimeFormatInfo.CurrentInfo.DateSeparator拿起分隔符。

+0

当我看着调试器时,它看起来像是' - ',但是看完整日期还有韩文字符。 – 2009-10-12 10:20:53