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
相关产品推荐
相关产品推荐

