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

将DateTime转换为"yyyymmdd"格式时代码报错,求排查问题

你的代码存在两个关键问题,直接导致了解析错误

1. 格式字符串用错了:mm是分钟,不是月份

你写的格式"yyyymmdd"里,小写的mm表示分钟,而月份需要用大写的MM。正确的目标格式应该是"yyyyMMdd"——这是引发格式不匹配的核心原因。

2. 做了完全冗余且错误的操作

你的deliveryDate已经是一个DateTime对象了,根本不需要先把它转成默认格式的字符串(结果是"3/31/2018 12:00:00 AM"),再用ParseExact去解析。这个默认字符串和你指定的"yyyymmdd"格式完全不匹配,自然会抛出“无法识别为有效DateTime”的错误。

正确的写法

如果你的需求是得到"yyyyMMdd"格式的字符串,直接调用DateTime的ToString方法即可:

DateTime deliveryDate = myRepository.DeliveryDate; // 值为3/31/2018 12:00:00 AM
string formattedDeliveryDate = deliveryDate.ToString("yyyyMMdd", CultureInfo.InvariantCulture);
// 结果会是 "20180331"

如果确实需要把这个格式的字符串再转回DateTime(虽然完全没必要,因为原对象已经是DateTime了),也要先正确格式化再解析:

DateTime deliveryDate = myRepository.DeliveryDate;
string formattedStr = deliveryDate.ToString("yyyyMMdd", CultureInfo.InvariantCulture);
DateTime parsedDate = DateTime.ParseExact(formattedStr, "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None);

记住:如果只是要格式化日期,直接用ToString就够了,别做多余的解析操作。

内容的提问来源于stack exchange,提问作者H.Nahio

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:02:19