日期选择器的自然语言处理

我们的日期选择器和转换功能非常强大。我很希望我们能简化在帖子中添加日期/时间的操作。一种常见的实现方式是通过自然语言处理。像 iOS 上的 Fantastical 这样的应用多年来一直利用这一功能进行日期输入。

你不再需要费力地用鼠标输入日期,而是可以直接输入类似以下内容:

  • monday at 2pm(周一下午 2 点),系统将输出转换为你所在时区的日期和时间
  • next friday at 10am NZST(下周五上午 10 点,新西兰标准时间),系统将输出下周五在新西兰标准时间下的日期和时间
  • 11am(上午 11 点),系统将输出今天的日期及上午 11 点
  • 8/9 to 8/13(8 月 9 日至 8 月 13 日),系统将输出一个日期范围

这一功能可以替换编辑器中点击日历图标后弹出的模态框,改为一个文本框(并附带一个“高级”按钮,用于显示现有模态框的内容);或者通过键盘快捷键触发一个独立的模态框。

9 个赞

这个库可能有助于实现:GitHub - wanasit/chrono: A natural language date parser in Javascript · GitHub

不过,我怀疑要为它提供稳健的多语言支持会是一个挑战。

目前完全支持的语言包括 enjafrdept 为部分支持)。v1 中的其他语言(nlzh)正在开发中。


另外,另一种值得考虑的 UX 模式是自动将帖子正文中的日期字符串替换为 Discourse 的日期/时间对象。这有点像“一键化”,但针对的是日期。例如,如果我在帖子中输入“下周一下午 2 点”,它会自动将其转换为 2021-08-17T18:00:00Z

5 个赞

我非常喜欢这个想法!

3 个赞

我很喜欢这个想法,你能给我展示一下你设想的 UI 模型吗?这正是这里所缺少的。

可能甚至不需要用户界面。帖子烘焙后,NLP 可以进行处理,返回到客户端并用一个简单的模态框进行确认:

找到 1 个日期。您想将其转换为动态时间戳吗?
- 星期二下午 2 点 --> [discourse date]

或者,也可以更简单。单击日历图标,而不是日期选择器,它会变成一个简单的文本框。

并且,类似于我们的邀请模态框,可以有一个用于高级控件的按钮,该按钮会显示我们现有的日期/时间/时区选择器,以获得更精细化的选项。

我猜这应该由 @j.jaffeux 来决定,不确定这是否符合我们目前的 UI?我也不确定普通人是否愿意输入这么多内容,尤其是在智能手机上?

这在谷歌日历中是有意义的,因为你可以在输入事件名称时执行此操作,例如,输入

“水管工”

而不是输入

“水管工 下午 3 点 - 下午 5 点”

但这很容易,因为我使用的是带键盘的设备。

我实际上觉得我们的模态框在桌面和移动设备上都很麻烦,这就是我最初提出这个功能的原因。在模态框中输入today at 11:31am比使用滚动轮或点击大型模态框要快得多。许多日历已经这样做了,这使得人们更容易理解。

1 个赞

在桌面端我同意。在智能手机上不同意,因为在智能手机上打字太痛苦了。也许这可以只在桌面端生效?

1 个赞

我个人对此没意见。

日期中有大量代码实际上已经完成了此操作,我们与 @daniel 一起完成了这项工作。

基本上,有三种方法可以解决此问题:

  • 一个更好的模态框
  • 某个命令
  • 文本解析

文本解析很棒,但它并不能解决所有问题,而且我们还必须使其适用于所有地区。但我同意我们可以启用对一小部分的支持。它基本上已经在这里了,我只需要完成/启用它。

5 个赞