C# 字符串未被识别为西班牙地区的有效日期时间

C# 字符串未被识别为西班牙地区的有效日期时间,c#,datetime,C#,Datetime,以下转换工作适用于“en-US”地区,但不适用于“es-AR”西班牙-阿根廷地区。请告诉我哪里错了 var cstZone = TimeZoneInfo.FindSystemTimeZoneById("Argentina Standard Time"); var _result = TimeZoneInfo.ConvertTimeFromUtc(DateTime.Parse("Mar 1 2015 1:00AM"), cstZone).ToString("MMM dd yyyy H:mm

以下转换工作适用于
“en-US”
地区,但不适用于
“es-AR”
西班牙-阿根廷地区。请告诉我哪里错了

 var cstZone = TimeZoneInfo.FindSystemTimeZoneById("Argentina Standard Time");
 var _result = TimeZoneInfo.ConvertTimeFromUtc(DateTime.Parse("Mar  1 2015  1:00AM"), cstZone).ToString("MMM dd yyyy H:mm tt", new CultureInfo("es-AR"));

DateTime.Parse默认情况下使用设置

这意味着您的
CurrentCulture
没有
MMM d yyy h:mmtt
作为

在这种情况下,您可以直接使用
DateTime.ParseExact
DateTime.TryParseExact
方法指定格式,或者使用基于英语的区域性,因为我们还需要解析
Mar
部分和
AM
部分

string s = "Mar  1 2015  1:00AM";
DateTime dt;
if(DateTime.TryParseExact(s, "MMM  d yyyy  h:mmtt", CultureInfo.InvariantCulture,
                          DateTimeStyles.None, out dt))
{
    dt.Dump(); // 01.03.2015 01:00:00
}

DateTime.Parse默认情况下使用设置

这意味着您的
CurrentCulture
没有
MMM d yyy h:mmtt
作为

在这种情况下,您可以直接使用
DateTime.ParseExact
DateTime.TryParseExact
方法指定格式,或者使用基于英语的区域性,因为我们还需要解析
Mar
部分和
AM
部分

string s = "Mar  1 2015  1:00AM";
DateTime dt;
if(DateTime.TryParseExact(s, "MMM  d yyyy  h:mmtt", CultureInfo.InvariantCulture,
                          DateTimeStyles.None, out dt))
{
    dt.Dump(); // 01.03.2015 01:00:00
}

DateTime.Parse默认情况下使用设置

这意味着您的
CurrentCulture
没有
MMM d yyy h:mmtt
作为

在这种情况下,您可以直接使用
DateTime.ParseExact
DateTime.TryParseExact
方法指定格式,或者使用基于英语的区域性,因为我们还需要解析
Mar
部分和
AM
部分

string s = "Mar  1 2015  1:00AM";
DateTime dt;
if(DateTime.TryParseExact(s, "MMM  d yyyy  h:mmtt", CultureInfo.InvariantCulture,
                          DateTimeStyles.None, out dt))
{
    dt.Dump(); // 01.03.2015 01:00:00
}

DateTime.Parse默认情况下使用设置

这意味着您的
CurrentCulture
没有
MMM d yyy h:mmtt
作为

在这种情况下,您可以直接使用
DateTime.ParseExact
DateTime.TryParseExact
方法指定格式,或者使用基于英语的区域性,因为我们还需要解析
Mar
部分和
AM
部分

string s = "Mar  1 2015  1:00AM";
DateTime dt;
if(DateTime.TryParseExact(s, "MMM  d yyyy  h:mmtt", CultureInfo.InvariantCulture,
                          DateTimeStyles.None, out dt))
{
    dt.Dump(); // 01.03.2015 01:00:00
}

您尚未为
DateTime.Parse指定
CultureInfo
,因此当当前区域性为
es AR
时,解析将失败。您指定的日期恰好是使用
CultureInfo.InvariantCulture
解析的,因此您可以通过添加必要的
CultureInfo
来修复代码:

DateTime.Parse("Mar  1 2015  1:00AM", CultureInfo.InvariantCulture)

但是,您可能希望使用
DateTime.ParseExact
同时指定预期格式和
CultureInfo
,以避免获得任何意外结果。

您尚未为
DateTime.Parse指定
CultureInfo
,因此当当前区域性为
es AR
时,解析将失败。您指定的日期恰好是使用
CultureInfo.InvariantCulture
解析的,因此您可以通过添加必要的
CultureInfo
来修复代码:

DateTime.Parse("Mar  1 2015  1:00AM", CultureInfo.InvariantCulture)

但是,您可能希望使用
DateTime.ParseExact
同时指定预期格式和
CultureInfo
,以避免获得任何意外结果。

您尚未为
DateTime.Parse指定
CultureInfo
,因此当当前区域性为
es AR
时,解析将失败。您指定的日期恰好是使用
CultureInfo.InvariantCulture
解析的,因此您可以通过添加必要的
CultureInfo
来修复代码:

DateTime.Parse("Mar  1 2015  1:00AM", CultureInfo.InvariantCulture)

但是,您可能希望使用
DateTime.ParseExact
同时指定预期格式和
CultureInfo
,以避免获得任何意外结果。

您尚未为
DateTime.Parse指定
CultureInfo
,因此当当前区域性为
es AR
时,解析将失败。您指定的日期恰好是使用
CultureInfo.InvariantCulture
解析的,因此您可以通过添加必要的
CultureInfo
来修复代码:

DateTime.Parse("Mar  1 2015  1:00AM", CultureInfo.InvariantCulture)


但是,您可能希望使用
DateTime.ParseExact
指定预期格式以及
CultureInfo
以避免获得任何意外结果。

如果这是12小时制(包括1-12小时数),则字符串中的
H
应该是
H
@JeppeStigNielsen,但字符串有
AM
部分,这不符合24小时格式?也使用范围最广的问题?因此,在您看来,例如
21:00AM
是一天中的有效时间。您可以在0-23中使用小时计数而不使用AM/PM指示器,或者在1-12中使用小时计数并包含AM/PM标记。任何混合都会让人困惑。是的,Soner…非常感谢。我已经使用了tryParseExact,但格式错误。@JeppeStigNielsen你是对的,看起来24小时时钟默认不代表任何时间指示器。很抱歉。更正了我的答案。看起来我需要再看一次那一页。我想如果这是12小时制(包括1-12小时数),字符串中的
H
应该是
H
。@JeppeStigNielsen但是字符串有
AM
部分,这不是24小时格式?也使用范围最广的问题?因此,在您看来,例如
21:00AM
是一天中的有效时间。您可以在0-23中使用小时计数而不使用AM/PM指示器,或者在1-12中使用小时计数并包含AM/PM标记。任何混合都会让人困惑。是的,Soner…非常感谢。我已经使用了tryParseExact,但格式错误。@JeppeStigNielsen你是对的,看起来24小时时钟默认不代表任何时间指示器。很抱歉。更正了我的答案。看起来我需要再看一次那一页。我想如果这是12小时制(包括1-12小时数),字符串中的
H
应该是
H
。@JeppeStigNielsen但是字符串有
AM
部分,这不是24小时格式?也使用范围最广的问题?因此,在您看来,例如
21:00AM
是一天中的有效时间。您可以在0-23中使用小时计数而不使用AM/PM指示器,或者在1-12中使用小时计数并包含AM/PM标记。任何混血儿都会让人困惑。是的,Soner…非常感谢。我已经用过TRIP了