1

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

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

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

}

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

更新:

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

我必须处理的实际输入是这种格式:

记录日期:“2012 年 4 月 30 日”

录制时间:“早上 5 点 30 分”

我需要从这些创建一个新的 DateTime 对象,在 am/pm 部分之前有一个空格。

4

2 回答 2

5

您有两个简单的选择:

  1. 使用 RegEx 修复格式:

    字符串 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,因为格式中的mmand之间没有定义分隔符。tt

于 2012-04-29T05:01:53.467 回答
0

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

于 2012-04-29T05:04:58.537 回答