【发布时间】:2013-11-11 14:00:21
【问题描述】:
我从需要存储在文本框中的数据库中提取 DateTime 值(如果您必须知道,它是 ASP.NET 文本框)。此 DateTime 包含毫秒。然后我需要将此值保存回数据库。
问题:当我做MyTextBox.Text = dbValue.ToString() 时,毫秒被排除在外。当用户去保存记录时,它会对 TextBox 值执行DateTime.Parse() 并将其写回数据库。由于字符串不再包含毫秒,因此 DateTime 的该组件在保存时会丢失。
我知道我可以通过提供一个使用fff 的自定义格式字符串来指定传入的毫秒数,但我有点希望这能考虑到文化。这意味着我不想硬编码格式字符串,因为如果我的代码在使用不同文化信息的机器上执行,该格式字符串理论上可能无效。
从概念上讲,我正在寻找一种动态方法,我所要做的就是告诉.ToString() 根据当前文化使用毫秒,而无需提供格式字符串。
【问题讨论】:
-
如果您调用
ToString将其转换为数据库所需的格式,那么文化设置是什么并不重要。fff将是毫秒,无论文化如何。 -
但是,为了强制
fff,我必须生成自定义格式字符串,不是吗? -
用户可以编辑文本框吗?如果答案是否定的,那么您不应该解析文本以将其放入数据库。您应该使用在文本框中显示的 DateTime 值。
-
@JoelRondeau,是的,用户可以编辑文本框。
-
@oscilatingcretin 是的,您将拥有一个自定义格式字符串,用于将其置于所需格式,但这不会影响用户,除非星期几(如“星期三”)是作为保存在数据库中的一部分,我看不出文化有多么重要,因为通常文化特定的东西实际上只与事物的顺序有关(您将在格式字符串中明确定义)。您的数据库肯定使用一致的格式吗?
标签: .net datetime datetime-format