C#实现法语日期转英语日期问题求助
问题分析与解决方法
核心问题
你的代码仅在obj.DATE_OPTIN等于"00/00/0000 00:00"时才执行转换逻辑,但目标日期是"21/01/1990 00:00:00",完全不满足该条件,所以转换代码根本没运行,输出自然还是原日期。另外直接用Convert.ToDateTime解析法语格式日期(日/月/年)存在风险——若系统默认文化不是法语区域,可能解析出错或颠倒月日。
修正后的代码
// 指定法语区域文化,确保正确解析日/月/年格式的日期 var frenchCulture = new System.Globalization.CultureInfo("fr-FR"); if (DateTime.TryParseExact(obj.DATE_OPTIN_ORGANISATEUR, "dd/MM/yyyy HH:mm:ss", frenchCulture, System.Globalization.DateTimeStyles.None, out DateTime parsedDate)) { // 格式化为目标的"yyyy-MM-dd HH:mm:ss"格式 obj.DATE_OPTIN = parsedDate.ToString("yyyy-MM-dd HH:mm:ss"); } // 可选:处理日期解析失败的情况 else { obj.DATE_OPTIN = "无效日期"; }
关键说明
- 用
DateTime.TryParseExact明确指定法语文化(fr-FR)和格式字符串"dd/MM/yyyy HH:mm:ss",避免解析歧义。 - 移除了原代码中不合理的条件判断,若需保留特定触发逻辑(比如仅替换无效日期),可调整判断规则,比如检查
obj.DATE_OPTIN是否为特定无效值。
内容的提问来源于stack exchange,提问作者taniiit
相关产品推荐
相关产品推荐

