解析"下午1:15"很容易:
var pattern = LocalTimePattern.CreateWithInvariantCulture("h:mm tt");
var time = pattern.Parse("1:15 pm").Value;
Run Code Online (Sandbox Code Playgroud)
但是,这不适用于"1:15 PM","1:15 PM"或"1:15 pm"的类似表格
是否内置支持其他形式的am/pm说明符,还是需要使用字符串预处理进行处理?
首先,"1:15 PM"版本应该已经有效 - 它对我有用.
如果你想允许"PM"或"pm".您需要使用适当的AM/PM指示符创建文化.这很容易做到:
using System;
using System.Globalization;
using NodaTime.Text;
using NodaTime;
class Program
{
static void Main()
{
var culture = (CultureInfo) CultureInfo.InvariantCulture.Clone();
culture.DateTimeFormat.AMDesignator = "a.m.";
culture.DateTimeFormat.PMDesignator = "p.m.";
string text = "1:15 P.M.";
var pattern = LocalTimePattern.Create("h:mm tt", culture);
var value = pattern.Parse(text).Value;
Console.WriteLine(value);
}
}
Run Code Online (Sandbox Code Playgroud)
但请注意,此时,pm并且am 无法工作 - 如果需要处理这两种格式,则需要创建多个模式,并查看哪一个(如果有)成功解析文本.