如何在文本数据库字段中存储c#datetime



我构建了一个动态表单系统,它接受文本字段、下拉列表和日期时间的类型。

表单答案也是动态的,所有内容都存储为文本,或者下拉答案的id的文本版本。

对于日期时间,我想知道将c#datetime序列化为文本的最佳格式是什么,纯粹用于序列化。我已经在Unix tics扩展上来回工作了,我可以使用它以及我的javascript调用。但我觉得还有更好的选择。

显然,DateTime.Parse将在返回时使用,但在退出时使用什么?

您只需将ToString与适当的标准或自定义日期/时间格式字符串一起使用即可。

然而,您需要非常小心:

  • 我建议使用CultureInfo.InvariantCulture来执行转换(解析时也是如此),以避免区域性特定值
  • 您需要考虑是否还要序列化DateTimeKind。这些值总是局部的、通用的还是未指定的DateTime值?您是否也应该使用DateTimeOffset并序列化偏移量
  • 你需要多大的精度
  • 还有什么会读取这些数据?像ISO-8601这样的"标准"格式可能是个好主意,可以扩展以保持与DateTime本身相同的精度。(标准oO格式字符串将生成ISO-8601字符串。)

对于往返DateTime值,显而易见的解决方案是使用"o"格式说明符。

除非您对字符串的长度有限制,并且准备牺牲精度、Kind属性(UTC或Local)或两者。在这种情况下,请使用满足您需要的自定义格式字符串。

最新更新