为了账号安全,请及时绑定邮箱和手机立即绑定

如何正确执行 DateTime.Parse

如何正确执行 DateTime.Parse

C#
收到一只叮咚 2022-12-24 10:24:44
我有以下方法:    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 时它失败了。错误是:解析 21/4/2019 11:6:56 时出现异常:字符串未被识别为有效的日期时间。我将 21/4/2019 11:6:56粘贴在调试器中,它可以工作。胡说八道。有人可以帮忙吗?请注意,无论有无 CultureInfo,它在 Azure(作为 Web 应用程序)上都会失败。同样在 Azure 上,我的 web.config 设置为:<globalization culture="" uiCulture="" />
查看完整描述

2 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

您可以尝试使用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

  1. DateTime.TryParseExactreturn bool,你可以处理它而不是 handle Exception。如果输入字符串与格式和区域性不匹配。它会回来false的。

  2. 确定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;

c#在线


查看完整回答
反对 回复 2022-12-24
?
慕少森

TA贡献2019条经验 获得超9个赞

    string dateTimeStr = "2019-04-35";

    DateTime dateTime;

    if (DateTime.TryParse(dateTimeStr, out dateTime))

    {

        Console.WriteLine(dateTime);

    }

    else

    {

        Console.WriteLine("Invalid");

    }


查看完整回答
反对 回复 2022-12-24
  • 2 回答
  • 0 关注
  • 123 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信