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

C#获取dd-MMM-yy格式今日日期,服务器返回异常求助

问题原因

DateTime.Today.ToString("dd-MMM-yy")默认使用当前运行环境的文化区域设置。你遇到的差异是因为本地开发环境采用英语文化(七月缩写为jul),而Windows Server服务器的系统文化是法语(或其他使用juil.作为七月缩写的文化),导致生成的格式不符合预期。

解决方案

以下是几种可靠的解决方法:

方法1:指定英语文化生成格式

在ToString方法中传入英语系的CultureInfo参数,强制使用英语的月份缩写:

using System.Globalization;

// 生成格式如 "28-Jul-22"
string result = DateTime.Today.ToString("dd-MMM-yy", CultureInfo.GetCultureInfo("en-US"));

// 如果需要全小写格式
string result = DateTime.Today.ToString("dd-MMM-yy", CultureInfo.GetCultureInfo("en-US")).ToLower();

方法2:使用与区域无关的固定文化

CultureInfo.InvariantCulture是独立于系统区域的固定格式,月份缩写为标准的三个字母,转小写后即可得到预期结果:

using System.Globalization;

string result = DateTime.Today.ToString("dd-MMM-yy", CultureInfo.InvariantCulture).ToLower();

输出为28-jul-22,完全符合需求。

方法3:手动拼接日期(备选方案)

如果不想依赖文化设置,可以手动定义月份缩写表来拼接日期:

string[] monthAbbreviations = { "jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec" };
DateTime today = DateTime.Today;
string result = $"{today:dd}-{monthAbbreviations[today.Month - 1]}-{today:yy}";

这种方式代码冗余,仅在无法使用文化设置时考虑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 12:15:35