我使用了一个 Web 服务,它以英文短格式为我提供日期,即 2015 年 3 月 21 日。然后该站点以正确的语言显示日期。这适用于所有语言(en、de、es、it、hu),但当月份是三月(三月)时除外。然后它在 es 中失败,并且只有它。
我尝试过隐式日期转换以及 Date.Parse(somedatestring)。两者都给出相同的结果。
该站点是 Win 2012 服务器 IIS8 上的 WebForms .NET 4.5 VB。我完全被难住了。
任何意见,将不胜感激。
我使用了一个 Web 服务,它以英文短格式为我提供日期,即 2015 年 3 月 21 日。然后该站点以正确的语言显示日期。这适用于所有语言(en、de、es、it、hu),但当月份是三月(三月)时除外。然后它在 es 中失败,并且只有它。
我尝试过隐式日期转换以及 Date.Parse(somedatestring)。两者都给出相同的结果。
该站点是 Win 2012 服务器 IIS8 上的 WebForms .NET 4.5 VB。我完全被难住了。
任何意见,将不胜感激。
此代码适用于您的字符串和es-ES
文化(西班牙语):
var esCulture = CultureInfo.CreateSpecificCulture("es-ES");
var format = "dd MMM yyyy";
DateTime dt;
if (DateTime.TryParseExact("21 Mar 2015", format, esCulture, DateTimeStyles.None, out dt))
{
Console.WriteLine("Parsed successfully: " + dt.ToString());
}
但是由于Mar
是英语(显然也是西班牙语)月份 March 的缩写,您可以使用以下命令强制它适用于每种语言CultureInfo.InvariantCulture
:
DateTime.TryParseExact("21 Mar 2015", format, CultureInfo.InvariantCulture, DateTimeStyles.None, out dt));
如果您想将其转换DateTime
为正确的语言,您可以使用DateTime.ToString
:
var cultures = new[] {
CultureInfo.CreateSpecificCulture("en-US"), CultureInfo.CreateSpecificCulture("de-DE"),
CultureInfo.CreateSpecificCulture("es-ES"), CultureInfo.CreateSpecificCulture("it-IT"), CultureInfo.CreateSpecificCulture("hu-HU")
};
foreach(var culture in cultures)
Console.WriteLine(dt.ToString("dd MMM yyyy", culture));
编辑:对不起C#,我希望你能明白。
谢谢蒂姆。排序: -
Public Shared Function translateDate(ByVal passedDate As String)
Dim outputDate As Date
Dim isDate As Boolean = DateTime.TryParseExact(passedDate, "dd MMM yyyy", CultureInfo.CurrentUICulture(), DateTimeStyles.None, outputDate)
outputDate = If(isDate, outputDate, "No Date")
Return outputDate.ToString("dd MMM yyyy")
End Function
您可以parse
使用特定于区域性的格式信息将日期和时间的字符串表示为等效的 DateTime。
Dim d As Date = Date.Parse("21 Mar 2015", New CultureInfo("en-US"))