C# 从标准模式解析NodeTime LocalDate时出现问题

C# 从标准模式解析NodeTime LocalDate时出现问题,c#,nodatime,C#,Nodatime,我在尝试将字符串解析为NodeTime LocalDate时遇到问题。我的代码如下所示: var value = "Monday, May 26, 2014"; var pattern = LocalDatePattern.CreateWithInvariantCulture("d"); var parseResult = pattern.Parse(value); var localDate = parseResult.GetValueOrThrow(); 这始终会导致不可解析的异常: 附加

我在尝试将字符串解析为NodeTime LocalDate时遇到问题。我的代码如下所示:

var value = "Monday, May 26, 2014";
var pattern = LocalDatePattern.CreateWithInvariantCulture("d");
var parseResult = pattern.Parse(value);
var localDate = parseResult.GetValueOrThrow();
这始终会导致不可解析的异常:

附加信息:值字符串与格式字符串“MM”中所需的数字不匹配

从我所知道的情况来看,我的值应该符合标准模式(当我查看模式的示例模板值时,它看起来与我试图解析的值非常相似)。我错过了什么

编辑

我将代码更改为以下内容,但仍收到类似错误:

var value = "Monday, May 26, 2014";
var pattern = LocalDatePattern.CreateWithInvariantCulture("dddd, dd MMMM, yyyy");
var parseResult = pattern.Parse(value);
var localDate = parseResult.GetValueOrThrow();
导致另一个不可解析的异常:

附加信息:值字符串与格式字符串“dd”中的所需数字不匹配


看起来他们把例子翻过来了。短日期模式(由
d
表示)为“MM/dd/yyyy”。您需要长日期模式,用
D

表示。这里的主要问题是您使用的模式是“dd MMMM”(在这两种情况下),但您的输入是“MMMM dd”。(对于“D”,您还有一个问题,即长日期模式在输入的年份之前不包含逗号。)

下面将解析上述输入,并演示如何使用
Format()
调试预期输入:

var pattern = LocalDatePattern.CreateWithInvariantCulture("dddd, MMMM dd, yyyy");
Console.WriteLine("Expecting input {0}.", pattern.Format(new LocalDate(2014, 5, 26)));

var value = "Monday, May 26, 2014";
var parseResult = pattern.Parse(value);
var localDate = parseResult.GetValueOrThrow();
Console.WriteLine("Parsed value is {0}.", localDate);

谢谢你的回复-我改变了我使用的模式,现在我仍然得到了一个类似的错误。顺便说一句,我认为我们可以在这里更好地报告问题,所以我提出了申请。谢谢Malcolm。我会注意到,我遇到这个问题是因为LocalDate的默认ToString()以这种格式输出日期——是否有意让内置的长日期模式无法解析此日期?(就像你说的那样,它好像缺少了一个逗号。)这不仅仅是因为它缺少了一个逗号:它还颠倒了月份和日期
ToString()
被记录为使用当前区域性使用标准格式模式(它实际上是“D”,将澄清),而您正在使用不变区域性进行解析。