2 个稳定版本
1.1.0 | 2022年10月21日 |
---|---|
1.0.0 | 2021年5月28日 |
0.1.0 |
|
#1905 in 解析器实现
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
仅仅使用utc
是utc+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