解析"下午1:15"很容易:
var pattern = LocalTimePattern.CreateWithInvariantCulture("h:mm tt");
var time = pattern.Parse("1:15 pm").Value;
然而,这并不适用于类似的形式" 1:15 PM"," 1:15 PM"或" 1:15 pm "
是否有内置支持其他形式的am / pm说明符,还是需要使用字符串预处理进行处理?
答案 0 :(得分:5)
首先,"下午1:15"版本应该已经有效 - 它适合我。
如果你想允许" P.M"或者" p.m"。您需要使用适当的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);
}
}
但请注意,此时pm
和am
不会工作 - 如果您需要处理这两种格式,则需要创建多个模式并查看哪个模式(如果有)成功解析文本。