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

C#中如何不受系统日期格式影响,按dd/MM/yyyy格式保存DateTime?

问题根源与解决方案

首先得纠正一个关键误解:DateTime类型本身并不存储显示格式。它内部是用一个数值(Ticks)来表示时间的,你看到的"05-10-2018"只是系统默认格式下的显示结果,并不是这个DateTime对象的实际存储内容。

你的解析代码其实是正确的:

String MCdatetime = "10-05-2018 15:20:00";
DateTime DBdatetime = DateTime.ParseExact(MCdatetime, "dd-MM-yyyy HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.None);

这段代码已经成功把输入字符串解析成了2018年5月10日15点20分的DateTime对象——你看到的"05-10-2018"只是系统用默认的MM/dd/yyyy格式显示它而已,对象本身的日期值是完全正确的。

如果你希望最终输出(比如保存到文件、显示给用户或者写入数据库时)呈现为dd/MM/yyyy HH:mm:ss格式,需要在输出/保存的环节主动格式化,而不是依赖系统默认格式:

举个例子,如果你要把这个日期转成指定格式的字符串保存:

// 转成指定格式的字符串
string formattedDate = DBdatetime.ToString("dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture);
// 之后可以把formattedDate保存到需要的地方

如果是写入数据库,还要注意:数据库的DateTime类型(比如SQL Server的datetime、datetime2)同样不存储格式,它只存储时间值。只要你的DBdatetime对象是正确的日期值,写入数据库后就是准确的,之后读取出来时再用ToString指定格式显示即可。

总结一下:

  • ParseExact的作用是正确解析字符串到DateTime对象,你的这一步已经做对了
  • 要得到指定格式的输出,必须在需要显示/保存字符串时用ToString主动指定格式,和系统默认格式无关

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:14:49