You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用DateTime获取24小时制小时遇System.FormatException错误

解决DateTime获取24小时制小时数的FormatException问题

直接通过DateTime.Now.Hour属性获取24小时制的小时数即可,无需将日期时间对象转为字符串再解析,这能彻底避免格式转换引发的异常。

修改后的完整代码

private void Window1_Loaded(object sender, RoutedEventArgs e)
{
    int time = DateTime.Now.Hour;
    string username = Environment.UserName + "!";

    if (time > 5 && time < 12)
    {
        var greeting = "Good morning, " + username;
        WelcomeLabel_Label.Content = greeting;
        MessageBox.Show(greeting);
    }
    else if (time > 11 && time < 18)
    {
        var greeting = "Good afternoon, " + username;
        WelcomeLabel_Label.Content = greeting;
        MessageBox.Show(greeting);
    }
    // 补充夜间场景处理(可选)
    else
    {
        var greeting = "Good evening, " + username;
        WelcomeLabel_Label.Content = greeting;
        MessageBox.Show(greeting);
    }
}

原代码出错原因

你原本使用ToString("H")的方式抛出FormatException,通常是因为当前线程的文化设置不支持单字母的格式符"H"。不同文化区域对日期格式符的解析规则存在差异,字符串转换容易触发这类兼容性问题。而直接访问Hour属性是获取小时数的原生方式,返回值本身就是整数类型,既高效又不会出现格式异常。

内容的提问来源于stack exchange,提问作者serix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 06:50:14