EnvSub

AutoHotkey

EnvSub

设置变量的值为它自身减去给定的值(还可以比较日期-时间值)。同义于:Var -= Value

EnvSub, Var, Value [, TimeUnits]
Var -= Value [, TimeUnits]
Var--

参数

Var

要运算的 变量 名.

任何整数, 浮点数或 表达式 (使用了 TimeUnits 时不支持表达式).

TimeUnits

如果使用此参数, 那么此参数指示命令如何从 Var 中减去 Value: 把它们都视为 YYYYMMDDHH24MISS 格式的日期时间戳. TimeUnits 可以为 Seconds, Minutes, Hours 或 Days (或仅使用这些单词的首个字母). 如果 Value 为空, 则使用当前时间代替. 同样地, 如果 Var 是空变量, 则使用当前时间代替.

结果总是被 向下 取整到最近的整数. 例如, 如果两个时间戳之间的实际差为 1.999 天, 那么运算的结果将为 1 天. 如果需要更高的精度, 请在 TimeUnits 中使用 Seconds 并把结果除以 60.0, 3600.0 或 86400.0 (以得到更精确的分钟数, 小时数或天数).

如果 VarValue 其中一个为无效的时间戳或包含早于 1601 的年份, 则 Var 会被置空来表示此问题.

内置变量 A_Now 包含了 YYYYMMDDHH24MISS 格式的当前本地时间.

要精确地测出两个事件之间所经过的时间, 请使用 A_TickCount method, 因为它提供了毫秒级的精度.

要从一个时间戳中加上或减去一定的秒数, 分钟数, 小时数或天数, 请使用 EnvAdd (减法通过加上负数来实现).

备注

此命令等同于这种简写形式:Var -= Value

通过使用 Var++Var--++Var--Var 可以让变量增加或减去 1。

如果 VarValue 其中一个为空或不以数字开头, 那么在计算中它会被视为 0 (不过用在表达式 内部 或使用了 TimeUnits 参数时例外).

如果 VarValue 都为小数, 那么最后的结果将为浮点数, 而格式由 SetFormat 决定.

相关

EnvAdd, EnvMult, EnvDiv, SetFormat, 表达式, If var is [not] type, SetEnv, FileGetTime

示例

EnvSub, MyCount, 2
MyCount -= 2  ; 等同于上面的命令

var1 = 20050126
var2 = 20040126
EnvSub, var1, %var2%, days
MsgBox, %var1%  ; 结果将是 366, 因为 2004 是个闰年.