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了