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

C++/CLI CLR WinForm中修改Stopwatch秒表显示格式为HH:mm:ss

C++/CLI中Stopwatch输出HH:mm:ss格式的实现方案

Stopwatch类的Elapsed属性返回TimeSpan类型值,默认无参ToString()输出会携带冗余的毫秒、小数秒数位,要固定输出两位小时、两位分钟、两位秒的格式,直接给ToString()方法传入自定义格式串即可。

修改后的事件代码

private: System::Void button3_Click(System::Object^  sender, System::EventArgs^  e) { 
    this->label3->Text = stopWatch.Elapsed.ToString(@"hh\:mm\:ss");
}

关键说明

  • TimeSpan类型的自定义格式规则和DateTime有区别:TimeSpan中用hh表示00-23范围的两位24小时制小时,和DateTime格式串中HH的显示效果一致;mm表示两位分钟,ss表示两位秒,不足两位时自动补前导零。
  • 格式串中的冒号前加反斜杠是为了转义:TimeSpan格式规则中未转义的冒号是区域敏感的时间分隔符占位符,在部分系统区域下会被替换为.等其他符号,转义后会固定显示冒号。
  • 字符串前的@是C++/CLI逐字字符串标识符,如果不使用逐字字符串,格式串需要写成"hh\\:mm\\:ss",效果完全相同。
  • 如果秒表累计时长可能超过24小时,需要不被24截断显示总小时,可以把格式串替换为@"%h\:mm\:ss";如果需要同时显示天数,可以用@"d\.hh\:mm\:ss"格式。
  • 如果需要强制忽略系统区域设置,保证输出格式完全不受环境影响,可以传入不变文化参数,代码如下:
    using namespace System::Globalization;
    
    private: System::Void button3_Click(System::Object^  sender, System::EventArgs^  e) { 
        this->label3->Text = stopWatch.Elapsed.ToString(@"hh\:mm\:ss", CultureInfo::InvariantCulture);
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 21:09:21