2 个稳定版本

1.1.0 2022年10月21日
1.0.0 2021年5月28日
0.1.0 2019年5月28日

#1905 in 解析器实现

MIT 许可证

26KB
514

runic

愚蠢的字符串到持续时间转换器

通用用法

提供了两种模式:使用 超时 或/和 使用 精确时间

事物的顺序不重要,可以随意混合。

超时的快速示例

"pause in 3 min"

精确时间的快速示例

"I should leave at 6pm"

在后一种情况下,它将计算您本地 "现在" 和指定的 精确时间 之间的持续时间。

发送消息,还是不发送消息

以下计时器完全相同,三个计时器都会返回相同的持续时间,唯一的区别是最后一个计时器为用户提供了某些文本。

"4 minutes"
"4m" # You have different methods to write the length (See below for more)
"remind me that I have a tea in the kitchen in 4 min"

通过示例学习

可以启动的最简单的计时器

"my first timer ever for 30 seconds"

这将简单地返回 30 秒!

可以组合多个持续时间

这些持续时间可以是任何长度,只要它对您有意义!

"1 minute 30s .5m 3600 seconds"

这将返回 1 小时 2 分钟!

可以使用精确时间

将计算当前时间和指定值之间的持续时间并添加到总持续时间

假设现在是上午 8 点 (08:00)

"remind me to join the meeting call at 9:15"

这将返回 1 小时 15 分钟!

可以在持续时间前面使用 -

这将告诉计时器您希望将目标时间向前调整 1 小时

"2h -1h -30m"

这将返回 30 分钟!

当与精确时间一起使用时效果很好

假设现在是下午 4 点 (16:00)

"originally event starts at 6pm was moved 1 hour I need -2 hours to get there"

这将返回 1 小时!

超时

计时器是所有指定超时的总和。您可以使用表示 小时分钟 的关键词来指定超时。

注意 超时和关键词之间的空格是可选的。

小时

  • hours
  • hour
  • hrs
  • hr
  • h

例如。

"10h"
"10 hr"
"10 hours"

分钟

  • minutes
  • minute
  • mins
  • min
  • m

例如。

"10m"
"10 min"
"10 minutes"

  • seconds
  • second
  • secs
  • sec
  • s

例如。

"10s"
"10 sec"
"10 seconds"

浮点数

您可以在超时中使用 .

"the long and boring way 2 hours 30 minutes"
"slightly shorter but still boring way 2h 30m"
"or in short 2.5h"

例如,当您需要快速指定 2 小时 30 分钟,但又不想写下来时,您可以这样做

".5h and it will be done"

或者,可能描述 30 分钟的最短方法是

单词at是一个关键字。它标志着精确时间表达式的开始,并用于明确指定一些感兴趣的时间。在底层,它计算本地现在与目标时间之间的持续时间。

"should finish at 19:30"
"should finish at 7:30pm"

与超时一样,时间和“am”/“pm”之间的空格是可选的。

"at 1am"
"at 1 am"

分钟部分是可选的,默认设置为0,因此以下计时器是相等的

"at 22"
"at 22:00"
"at 10pm"
"at 10:00 pm"

使用其他时区进行比较

单词utc(不区分大小写)是一个关键字。它用于精确时间表达式的末尾,指明我正在针对的时间实际上在另一个时区

以下是一个例子 - 10 am UTC,程序将根据您的当前本地时间确定其含义,并计算适当的超时时间。

"at 10am UTC"

您有四种指定utc关键字的方式

仅仅utc

仅仅使用utcutc+0的别名(或者说是utc-0)。

以下例子都是相同的

"at 10am utc"
"at 10am utc+0"
"at 10am utc-0"

简短变体

简短变体是当您只想指定目标小时时。

"at 10am utc+1"
"at 10am utc-3"
"at 10am utc+10"
"at 10am utc-11"

长变体

指定小时,然后是可选的冒号,然后是分钟。

注意,在长变体中,您必须始终使用两位数字表示小时和两位数字表示分钟。

带有冒号的示例

"at 10am utc+01:00"
"at 10am utc+11:30"
"at 10am utc-03:30"
"at 10am utc-00:45"

不带冒号的示例(仅4位数字)

"at 10am utc+0100"
"at 10am utc+1130"
"at 10am utc-0330"
"at 10am utc-0045"

一天的开始和结束在哪里?

如果指定的时间相对于当前24小时天是过去的,它将延续到下一天,例如

假设是10月1日,晚上11:30(23:30)

"definitely go to sleep at 2am"

由于10月1日已经有一个凌晨2点的时间点,所以它延续到下一天,即10月2日,实际上设置了2小时30分钟的时间。

对于更远的时间点也是如此

假设是10月1日,下午4:15(16:15)

"at 4:15am"

依赖项

~4MB
~77K SLoC