【发布时间】:2011-07-27 16:04:27
【问题描述】:
我有一个系统,它从外部来源获取信息,然后将其存储以供以后显示。
其中一个数据项是日期。在源系统上,他们有模糊日期的概念,即不准确到特定的日期,有时也不准确到一个月。所以我得到格式的日期:
dd/mm/yyyy
mm/yyyy
yyyy
我可以将这些解析为 DateTime 对象并使用它们,但是在稍后渲染时,我需要能够确定日期的准确性,因为解析“2010”将导致日期为“01/01/2010”。我只想显示年份,所以需要知道它的原始准确性。
我已经模拟了一个快速课程来处理这个问题:
public class FuzzyDate
{
public DateTime Date { get; set; }
public DateType Type { get; set; }
}
public enum DateType
{
DayMonthYear,
MonthYear,
Year
}
这将为我完成这项工作,我可以在解析时做一些事情来处理它,但我觉得这可能是一个很常见的问题,并且可能有一个现有的更清洁的解决方案。
.Net 中是否有内置功能可以做到这一点?我看过文化资料,但似乎不太对。
任何帮助将不胜感激。
【问题讨论】:
-
我不知道有什么内置的东西可以支持这一点。我建议看一下 NodaTime (code.google.com/p/noda-time) - 虽然我在浏览该源代码时看不到任何可以专门解决您的问题的东西,但您可能会。还要考虑存储字符串格式表示(或对格式的引用)而不是枚举值的可能性 - 这允许您在需求发生变化时添加新的日期存储格式而无需重新编译和重新部署。