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

为何DateTime转换后日期不符?日期选择器日期格式转换求助

问题分析与解决办法

哦,我一眼就发现问题所在啦!你这里踩了一个DateTime格式字符串里很容易混淆的小坑:

你在ParseExact里用的格式字符串是"dd/mm/yyyy",但这里的小写mm代表的是分钟,而不是月份!大写的MM才是用来表示两位数字的月份的。

正因为这个格式错误,系统把你输入的"25/04/2018"里的04当成了分钟数,月份则默认取了1月(也就是01),所以才会得到25/01/2018 12:04:00 AM这个不符合预期的结果。

正确的代码实现

只需要把格式字符串里的mm改成MM就可以解决问题了,完整代码如下:

string tbdate = textboxdate.Text;
DateTime lastdate = DateTime.ParseExact(tbdate, "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture);
string newFormat = lastdate.ToString("yyyy-MM-dd");

额外小提示

如果想要让代码更健壮,避免因为输入格式不匹配导致的异常,可以考虑使用DateTime.TryParseExact方法,示例如下:

string tbdate = textboxdate.Text;
if(DateTime.TryParseExact(tbdate, "dd/MM/yyyy", System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out DateTime lastdate))
{
    string newFormat = lastdate.ToString("yyyy-MM-dd");
    // 这里处理转换成功后的逻辑
}
else
{
    // 处理输入格式不正确的情况
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:12:27