2

我在私人环境中使用带有 SMW 扩展的 Mediawiki 来组织我的小组正在创建的虚构世界。我有一些我想要的功能,我想知道是否有扩展,或者是否有可能制作我自己的,这会让我做我想做的事情。

基本上,用简单的英语......我想知道宇宙在特定时间点(或持续时间)发生了什么。

我想让用户能够给出日期(就像一年一样简单,或者根据需要精确)或持续时间,并返回具有重叠持续时间的每个事件。

例如。

  • 事件 1 开始于公元前 3200 年,结束于公元前 198 年
  • 事件 2 开始于公元前 509 年,结束于公元 405 年
  • 事件 3 开始于 1/15/419 CE,结束于 1/17/419 CE
  • 事件 4 开始于公元前 409 年,结束于公元 2021 年 2 月 14 日

用户输入公元前 309 年的日期(在本例中为部分日期)。Wiki 返回事件 1 和事件 4,因为给定日期在两者的持续时间内。

这将允许我的创作者查询特定日期(希望是持续时间)并发现已经发生的事件,因此他们可以根据已经建立的内容调整他们的作品。这是一个简单的冲突检查器。

如果没有可用的扩展可以处理这个问题,那么我可以研究的任何地方都有这样的东西吗?我从未在 PHP 中处理过日期。我是一名普通的业务编码员,我从未做过复杂的应用程序。

4

1 回答 1

1

SMW 中没有内置的“持续时间”数据类型,因此最简单的方法可能是使用一个日期属性作为开始日期,一个作为结束日期(注意它必须是BC/ AD,而不是BCE/CE或类似的):

[[Event starts at::3200 BC]]
[[Event ends at::198 BC]]

然后您可以查询在某个日期之前具有开始日期和在某个日期之后具有结束日期的每个事件:

{{#ask:[[Event starts at::<1000 BC]] [[Event ends at::>1000 BC]]}}

请注意,这>实际上意味着 SMW 查询语法中的“大于或等于”。

于 2015-01-13T18:59:10.267 回答