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

DateTime.ToString指定格式输出异常问题求助

问题原因分析
  • 格式字符串中的/并非字面量斜杠,而是日期分隔符占位符,会被指定文化的DateTimeFormatInfo.DateSeparator值替换。
  • 你的本地en-US文化配置被修改:默认en-US的日期分隔符为/,但你的环境中该值已被改为-,因此所有依赖该文化的ToString调用都会输出-作为分隔符。
  • CultureInfo.InvariantCulture是固定不变的全局文化,其日期分隔符始终为/,因此这一行输出符合预期。
验证与解决方法

验证当前文化的日期分隔符

运行以下代码可确认问题根源:

var usCulture = new CultureInfo("en-US");
Console.WriteLine(usCulture.DateTimeFormat.DateSeparator); // 你的环境会输出 "-",正常环境输出 "/"

解决方式

  1. 强制输出字面量斜杠:在格式字符串中用单引号包裹/,将其转为字面量:
    Console.WriteLine(DateTime.Today.ToString("yyyy'/'MM'/'dd")); // 始终输出 2022/10/24
    
  2. 恢复系统区域设置:打开系统「区域设置」,检查英语(美国)的日期格式分隔符,将其改回默认的/。
  3. 代码层面重置文化配置:创建en-US文化的独立副本,手动重置日期分隔符:
    var usCulture = new CultureInfo("en-US", false);
    usCulture.DateTimeFormat.DateSeparator = "/";
    Console.WriteLine(DateTime.Today.ToString("yyyy/MM/dd", usCulture));
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 05:15:35