虽然与DateTime.ParseExact格式问题挣扎,我决定喂ParseExact的出离则DateTime.ToString()说,像这样的:为什么不能DateTime.ParseExact解析DateTime输出?
DateTime date2 = new DateTime(1962, 1, 27);
string[] expectedFormats = { "G", "g", "f", "F", "D", "d", "M/d/yyy", "MM/dd/yyy", "MM-dd-yyy", "MMM dd, yyy", "MMM dd yyy", "MMMM dd, yyy", "MMMM dd yyy" };
bool parsed = false;
foreach (string fmt in expectedFormats)
{
try
{
DateTime dtDateTime = DateTime.ParseExact(date2.ToString(fmt), fmt, new CultureInfo("en-US"));
parsed = true;
}
catch (Exception)
{
parsed = false;
}
Console.WriteLine("[{0}] {1}", parsed,date2.ToString(fmt));
}
这是输出:
[True] 1/27/1962 12:00:00 AM
[True] 1/27/1962 12:00 AM
[True] Saturday, January 27, 1962 12:00 AM
[True] Saturday, January 27, 1962 12:00:00 AM
[True] Saturday, January 27, 1962
[True] 1/27/1962
[False] 1/27/1962
[False] 01/27/1962
[False] 01-27-1962
[False] Jan 27, 1962
[False] Jan 27 1962
[False] January 27, 1962
[False] January 27 1962
做什么我必须这样做ParseExact将解析自定义格式字符串?我期望DateTime能够根据相同的格式字符串摄取它自己的输出,我错了吗?
这不是错误的原因,但对于信息:你是通过一个特定的文化解析,但使用默认区域性的ToString。这本身会由于语言环境而导致问题。但是我测试过了,这不是* only *问题。 – 2010-07-23 19:46:45
@Marc:我也通过将相同的文化传递给两种方法来测试它。我也试过'CultureInfo.InvariantCulture'的踢n-grins无济于事。 – 2010-07-23 20:16:07