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

C#日期格式问题:如何生成英、美格式的DateTime对象

你误解了DateTime对象的本质哦!

首先得给你掰明白一个核心点:DateTime对象本身是不存储“格式”的,它就像一个时间的“本质”——内部存的是从某个基准时间开始的滴答数,不管是英国还是美国的显示方式,它代表的都是同一个时间点。你想要“英国格式的DateTime”或者“美国格式的DateTime”,这个思路本身就错啦😅

咱们来拆解你的代码问题:

  • 你先把dtpStartDate.Value.Date转成字符串,再用ParseExact转回去DateTime,这完全是多此一举!直接用dtpStartDate.Value就能拿到正确的DateTime对象,根本不用绕一圈字符串解析。
  • 你用Convert.ToDateTime(dtUK, new CultureInfo("en-US"))试图得到“美国格式的DateTime”,但这个操作其实啥也没改变——因为输入已经是DateTime对象了,转换后还是同一个时间点,文化信息只在解析字符串时有用,对DateTime对象本身无效。

那正确的做法应该是怎样的?
其实你真正需要的应该是:一个统一的DateTime对象,然后根据需要把它转换成英国格式或美国格式的字符串。代码示例如下:

// 直接从DateTimePicker获取时间,这是唯一需要的DateTime对象
DateTime targetDate = dtpStartDate.Value;

// 转换成英国格式的字符串(dd/MM/yyyy 时:分:秒)
string ukDateString = targetDate.ToString("dd/MM/yyyy HH:mm:ss", new CultureInfo("en-GB"));

// 转换成美国格式的字符串(MM/dd/yyyy 时:分:秒)
string usDateString = targetDate.ToString("MM/dd/yyyy HH:mm:ss", new CultureInfo("en-US"));

如果你的需求真的是要解析不同格式的字符串到DateTime(比如从用户输入的不同格式字符串获取时间),那才需要用到ParseExact指定格式,但从DateTimePicker拿时间的话,直接用Value就好啦。

总结一下:DateTime是时间的“本质”,格式是给人看的字符串形式——别再纠结创建不同格式的DateTime对象啦,拿到正确的时间对象后,按需转字符串就搞定了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:10:22