我构建了一个动态表单系统,它接受文本字段、下拉列表和日期时间的类型。
表单答案也是动态的,所有内容都存储为文本,或者下拉答案的id的文本版本。
对于日期时间,我想知道将c#datetime序列化为文本的最佳格式是什么,纯粹用于序列化。我已经在Unix tics扩展上来回工作了,我可以使用它以及我的javascript调用。但我觉得还有更好的选择。
显然,DateTime.Parse将在返回时使用,但在退出时使用什么?
您只需将ToString
与适当的标准或自定义日期/时间格式字符串一起使用即可。
然而,您需要非常小心:
- 我建议使用
CultureInfo.InvariantCulture
来执行转换(解析时也是如此),以避免区域性特定值 - 您需要考虑是否还要序列化
DateTime
的Kind
。这些值总是局部的、通用的还是未指定的DateTime
值?您是否也应该使用DateTimeOffset
并序列化偏移量 - 你需要多大的精度
- 还有什么会读取这些数据?像ISO-8601这样的"标准"格式可能是个好主意,可以扩展以保持与
DateTime
本身相同的精度。(标准o
或O
格式字符串将生成ISO-8601字符串。)
对于往返DateTime值,显而易见的解决方案是使用"o"格式说明符。
除非您对字符串的长度有限制,并且准备牺牲精度、Kind属性(UTC或Local)或两者。在这种情况下,请使用满足您需要的自定义格式字符串。