.NET模糊日期/时间管理库

7
我正在寻找一个.NET库,可以存储和管理模糊(即不确定)的日期/时间,也就是不遵循通常精确的日、月、年、小时、分钟、秒的模式的时间表达式。我需要处理表示日期/时间值的东西,例如:
- 1985年第二季度 - 1930年代早期 - XVII世纪的第二个第三
该库可能会实现一个FuzzyDateTime类型或类似的内容,并允许多种方式从文本和/或常规DateTime值构建其实例。还需要比较和排序功能。
那么,我的问题是:您是否知道任何可用的产品符合这个描述?我很乐意考虑各种产品,包括商业、开源、免费等。
有什么想法吗?非常感谢。

想法是用来做什么的?实现这个想法?已经有类似的东西了吗?你的问题是什么? - Oded
3
关于传统的“模糊”逻辑,我不确定是否应该称它们为“模糊”的;也许“早期的1930年代”是含糊的,但其他的表达方式是准确的——只不过是以非标准的方式表达。 - Marc Gravell
@Oded:我的问题在问题的第一段中已经说明:“我正在寻找一个.NET库...”。也许不太清楚,我是在尝试寻找一个要购买和/或使用的产品,而不是如何从头开始开发它的建议;我现在正在编辑以澄清。 - CesarGon
@Marc Gravell:我对学术界通常理解的模糊逻辑(即Zadeh及其相关人员)并不感兴趣。从我所看到的情况来看,像Lakoff的径向范畴这样的语言学方法应该更有效,因为时间领域中的不确定性往往是认识论而非本体论的。抱歉我有点小迷糊,但你的话确实触及了一个热门研究问题。 :-) - CesarGon
啊,我的错。我以为你是指会存储准确的日期和时间,并以模糊的方式显示它。实际上存储不确定的日期是完全不同的事情。祝你好运! - drharris
显示剩余2条评论
2个回答

7

你很可能需要从头开始编写这个功能。也许有一个你可以转换的Java库,但似乎这种功能现在更多是学术研究领域的事情,而不是已经在各个地方投入生产使用的东西。最终,你可能能够使用一些学术研究成果,但你可能需要根据自己的需求编写自己的代码。

为了允许最大的灵活性,我建议将日期的每个部分存储在单独的可空字段中,并使用一个值来指示第一个空字段的不确定性。

class UncertainDate
{
    public byte? Millennium { get; set; }
    public byte? Century { get; set; }
    public byte? Decade { get; set; }
    public byte? Year { get; set; }
    public byte? Month { get; set; }
    public byte? Day { get; set; }
    // more as you see fit

    public decimal Uncertainty { get; set; }
}

作为一个例子,“2000年第一季度”将被表示为:
var d = new UncertainDate() { Millennium = 2, Century = 0, Decade = 0, Year = 0, Uncertainty = 0.25m };

这样做虽然会使比较变得容易(按顺序比较每个字段,第一个或最小的不确定性输掉),但在解析字符串输入和给出字符串输出方面需要走很长的路。

您还可以使用枚举来表示不确定性,例如FirstQuarter,FirstHalf,Early,Late,ThirdQuarter等值。十进制数使相对比较变得容易,但更难以反向转换为像“下半场”之类的东西(即0.75是“下半场”还是“第三节”?)

有类似问题的参考:相似的问题已经被问过了。


谢谢。我正在寻找现有的产品,而不是从头开始开发。非常感谢提供相关问题的链接;非常有趣! - CesarGon

3
我不知道任何库/产品,尽管我可以想象在任何“语义”领域(如语义Web等)中都至少考虑过这一点。
如果我正确理解你的意思(特别是当你想要排序等时),那么那些“模糊”的东西只是指两个特定时间点之间的“区间”...
你可以创建一个包含2个日期时间的类...开始和结束...或者开始加上持续时间... 增加任何你可能想象的表示方式...一些构造函数来解释你想要添加的内容(比如说某些“知道”什么是“早期”或“季度”的东西)并从中构建相关的开始和结束。
由于你有一个开始时间和一个结束时间(无论是DateTime还是持续时间),所以它们是完全可比较和可排序的...
至于存储,你可以将其序列化...

谢谢。我正在寻找现有的产品,而不是从头开始开发。 - CesarGon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接