如何正确做DateTime.Parse
How to do DateTime.Parse correctly
我有以下方法:
private DateTime GetDateTimeFromString(string dateTimeStr)
{
try
{
return DateTime.Parse(dateTimeStr, CultureInfo.InvariantCulture);
}
catch (Exception ex)
{
_logger.Log($"Exception while parsing {dateTimeStr}: {ex.Message}.");
return DateTime.Now;
}
}
当我在 Visual Studio 中 运行 它工作正常。但是当它部署到 Azure 时它失败了。错误是:
Exception while parsing 21/4/2019 11:6:56: String was not recognized as a valid DateTime.
我将 21/4/2019 11:6:56 粘贴到调试器中,它可以工作。胡说八道。有人可以帮忙吗?
请注意,无论有没有 CultureInfo,它在 Azure(作为 Web 应用程序)上都会失败。
同样在 Azure 上,我的 web.config 设置为:
<globalization culture="" uiCulture="" />
您可以尝试使用DateTime.TryParseExact并设置解析格式。
DateTime dt;
DateTime.TryParseExact("21/4/2019 11:6:56",
"dd/M/yyyy hh:m:ss",
System.Globalization.CultureInfo.InvariantCulture,
System.Globalization.DateTimeStyles.None,
out dt);
我使用 DateTime.TryParseExact
而不是 DateTime.Parse
有两个原因
DateTime.TryParseExact
returnbool
,你可以处理它而不是处理Exception
。如果输入字符串与格式和区域性不匹配。它将 return false
.
- 确定参数
Culture
和日期时间格式。
像这样。
DateTime dt;
if(!DateTime.TryParseExact(dateTimeStr,
"dd/M/yyyy hh:m:ss",
System.Globalization.CultureInfo.InvariantCulture,
System.Globalization.DateTimeStyles.None,
out dt))
{
_logger.Log($"Exception while parsing {dateTimeStr}");
dt = DateTime.Now;
}
return dt;
string dateTimeStr = "2019-04-35";
DateTime dateTime;
if (DateTime.TryParse(dateTimeStr, out dateTime))
{
Console.WriteLine(dateTime);
}
else
{
Console.WriteLine("Invalid");
}
我有以下方法:
private DateTime GetDateTimeFromString(string dateTimeStr)
{
try
{
return DateTime.Parse(dateTimeStr, CultureInfo.InvariantCulture);
}
catch (Exception ex)
{
_logger.Log($"Exception while parsing {dateTimeStr}: {ex.Message}.");
return DateTime.Now;
}
}
当我在 Visual Studio 中 运行 它工作正常。但是当它部署到 Azure 时它失败了。错误是:
Exception while parsing 21/4/2019 11:6:56: String was not recognized as a valid DateTime.
我将 21/4/2019 11:6:56 粘贴到调试器中,它可以工作。胡说八道。有人可以帮忙吗?
请注意,无论有没有 CultureInfo,它在 Azure(作为 Web 应用程序)上都会失败。
同样在 Azure 上,我的 web.config 设置为:
<globalization culture="" uiCulture="" />
您可以尝试使用DateTime.TryParseExact并设置解析格式。
DateTime dt;
DateTime.TryParseExact("21/4/2019 11:6:56",
"dd/M/yyyy hh:m:ss",
System.Globalization.CultureInfo.InvariantCulture,
System.Globalization.DateTimeStyles.None,
out dt);
我使用 DateTime.TryParseExact
而不是 DateTime.Parse
DateTime.TryParseExact
returnbool
,你可以处理它而不是处理Exception
。如果输入字符串与格式和区域性不匹配。它将 returnfalse
.- 确定参数
Culture
和日期时间格式。
像这样。
DateTime dt;
if(!DateTime.TryParseExact(dateTimeStr,
"dd/M/yyyy hh:m:ss",
System.Globalization.CultureInfo.InvariantCulture,
System.Globalization.DateTimeStyles.None,
out dt))
{
_logger.Log($"Exception while parsing {dateTimeStr}");
dt = DateTime.Now;
}
return dt;
string dateTimeStr = "2019-04-35";
DateTime dateTime;
if (DateTime.TryParse(dateTimeStr, out dateTime))
{
Console.WriteLine(dateTime);
}
else
{
Console.WriteLine("Invalid");
}