分配“dd/MM/yyyy”数据时的日期时间,但它保存为“MM/dd/yyyy”
Posted
技术标签:
【中文标题】分配“dd/MM/yyyy”数据时的日期时间,但它保存为“MM/dd/yyyy”【英文标题】:Datetime when assigned "dd/MM/yyyy" data but it keep store as "MM/dd/yyyy" 【发布时间】:2021-12-17 16:24:56 【问题描述】:我在分配 DateTime 对象时遇到问题让我们说:- 日期时间对象 1 =“2021 年 3 月 11 日”; // 2021 年 11 月 3 日到另一个 DateTime 对象 日期时间 object2 = object1;
然后 object2 将自动变为“11/03/2021”。 我努力创建了一个新的 DateTime 对象,结果仍然相似。 任何帮助将不胜感激。
【问题讨论】:
ADateTime
,在内部,只是从 01/01/0001 开始的午夜开始计算的 100ns 间隔。您观察到的任何格式都是在您将其转换为字符串 时发生的。在内部它没有格式信息,就像我说的,它只是一个计数。
供您参考,Datetime 是一个结构(值类型)。它克隆每个分配。 ***.com/questions/4265399/…user.CheckinDt = logusr.CheckinDt //clone value
你可以试试:user.CheckinDt.ToString("dd/MM/yyyy", DateTimeFormatInfo.InvariantInfo)
@Tohm .. 我的 newdt 中的值是正确的。这是我存储在 sqlite 中的内容。但是,当分配给 user.CheckinDt 滴答声时,它会看到不同的值。我通读了固定,但我是否克隆到我的 user.CheckinDt ?因为我正在分配 user.CheckinDt = new DateTime(Year,Month,Day)
,可以建议在那里改变什么吗?
请不要将代码或错误作为图片发布。请张贴minimal reproducible example 说明问题
【参考方案1】:
首先:DateTime object1 = "03/11/2021";
- 你没有它 - 它不会编译,因为 string
不能隐式转换为 DateTime
。
其次:DateTime
只不过是时间的数字表示。所以在引擎盖下它只不过是一个数字(如前所述,自给定时间点以来的 ns 数)。日期的显示方式只是一个小问题 - 引擎盖下的值保持不变。
请阅读如何在 C# 中格式化日期以及如何解析它。
【讨论】:
请看我的截图。我的问题不是我的实际代码。它只是为了解释。我没有将 03/11/2021 分配给我的日期时间。我很确定我传入的对象没有正确存储。以上是关于分配“dd/MM/yyyy”数据时的日期时间,但它保存为“MM/dd/yyyy”的主要内容,如果未能解决你的问题,请参考以下文章
将 dd/mm/yyyy 格式的字符串转换为日期时间 [重复]
如何在oracle中以dd / mm / yyyy格式将当前日期插入DATE字段
将输入日期数据类型更改为 DD/MM/YYYY 而不是 MM/DD/YYYY 需要 [重复]