我正在玩一些历史数据,其中我知道一些日期准确(即dd/mm/yyyy),而其他日期只是yyyy而其他日期是yyyy?(即年份不确定).我甚至遇到了fl,这显然意味着"蓬勃发展".
目前我正在使用DateTime类,它似乎不支持这种不确定性的标记/表示.有没有解决这个问题的标准方法?
LBu*_*kin 11
我会考虑创建一个包装DateTime(或DateTimeOffset)的类,并有其他字段来表示日期的哪些部分是确定的,哪些部分不是.
然后,您可以将月,日和年字段显示为可空值,以反映日期的哪些部分已知.
有关于表示大致时间的方法的各种学术论文,例如http://www.musiccog.ohio-state.edu/Humdrum/representations/date.rep.html
如果您想要处理历史文档的全部范围以及您对其中任何一个的大致知识,那么使用DateTime值并不是简单的bool/nullable操作.
我还没有看到一个C#库来处理这个问题.我自己的C#自然语言引擎可以理解各种日期时间短语,但是针对不同的问题而设计 - 它可以接受一个不精确的问题并查询具有精确值的数据库.
它具有特定日期,日期范围,已知年份(但没有月/日),已知年份+月份(但没有日期),半无限范围(例如在给定日期之前或之后)的类别, ...并且使用它们可以构建针对数据库的查询,或者可以枚举可能意味着的所有可能的日期范围.例如,你可以问它"去年下午4点以后打电话的人",它可以生成适当的SQL查询.
如果你想做到这一点,那就不容易了!如果我是你,我将捕获一个字符串值,其中包含原始文本,以及您选择用于DateTime值的任何表示.通过这种方式,您可以使表示更加智能,以涵盖更多案例,最终能够处理"1940年至1945年9月16日之间的某些事情".
最初,您可能只想存储字符串表示和两个DateTime值 - 尽可能早和最晚可能的日期.这涵盖了您将看到的大多数情况,并且查询非常容易.您可以将Datetime值保留为null,也可以将其设置为最大值或最小值,以表示半无限范围,例如"1900之后".
归档时间: |
|
查看次数: |
967 次 |
最近记录: |