字符串解析时间

问题描述:

我需要以“07:30 am”(不区分大小写)的格式获取时间。我正在阅读格式为“07:30 am”的文件。最终,我将从此构建一个DateTime,所以我只需要在am/pm部分之前留出一个空格。字符串解析时间

我可以检测一个使用这种发生或号码:

if(startString.IndexOfAny("ap".ToCharArray()) != -1) 
{ 

} 

什么是做到这一点的最佳途径?我猜我最终会得到两个可以与空间连接的字符串?可以使用上面的代码片段来实现这一点吗?

UPDATE:

我需要的分钟和AM/PM之间的日期时间的空间就结了,我不希望使用正则表达式。到目前为止,没有我在这里试图给我说...

实际输入我要处理的格式如下:

RecDate:“04月30日”

RECTIME: “05:30 am”

我需要在am/pm部分之前用空格创建一个新的DateTime对象。

你有两种选择,方便:

  1. 使用正则表达式来修正格式:

    串NEWTIME = Regex.Replace(startString,@“(< = [01] \ d:[ 0-5] \ d)(?= [ap] m)“,”“);

  2. 使用DateTime.ParseExact只导入时间原样:

    的DateTime NEWVALUE = DateTime.ParseExact( startString, “HH:MMTT”, CultureInfo.InvariantCulture);

我不喜欢第二种方法。

您需要使用不变文化,因为格式中mmtt之间没有定义分隔符。

+0

第二种方法没有这样的签名 - 似乎我通过一个提供者;这对美国英语来说是正确的吗?第二个参数也出现错误:“标识符预期”? – IrishChieftain 2012-04-29 05:11:29

+0

@IrishChieftain'CultureInfo'实现'IFormatProvider',所以像'New CultureInfo(“en-US”)'应该做的伎俩。 – phoog 2012-04-29 05:14:51

+0

正则表达式中的“d”也出现错误:“无法识别的转义序列”... – IrishChieftain 2012-04-29 05:15:32

为什么你不使用正则表达式呢? (http://msdn.microsoft.com/de-de/library/system.text.regularexpressions.regex(v=vs.80).aspx)应该是一个正则表达式向导容易的事情(我不是)