字符串解析时间

Iri*_*ain 1 c# asp.net string

我需要以"07:30 am"(不区分大小写)的格式获取时间.我正在阅读一个文件,格式为"07:30 am".最终我将构建一个DateTime,所以我只需要在am/pm部分之前用空格来回来.

我可以使用以下方法检测a或p的出现:

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

}
Run Code Online (Sandbox Code Playgroud)

这样做的最佳方法是什么?我猜我最终会得到两个可以与空格连接的字符串?可以拆分与上面的代码片段一起使用来实现这个目的吗?

更新:

我需要在分钟和AM/PM之间的DateTime中留出一个空格,我不想使用正则表达式.到目前为止,我在这里尝试过的任何东西都没有给我......

我必须处理的实际输入采用以下格式:

RecDate:"04/30/2012"

RecTime:"05:30 am"

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

ric*_*ent 5

你有两个简单的选择:

  1. 使用RegEx修复格式:

    string newTime = Regex.Replace(startString,@"(?<= [01]\d:[0-5]\d)(?= [ap] m)","");

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

    DateTime newValue = DateTime.ParseExact(startString,"hh:mmtt",CultureInfo.InvariantCulture);

我偏爱第二种方法.

您需要使用Invariant Culture,因为在格式mmtt格式之间没有定义分隔符.