# EnvSub

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

    EnvSub, Var, Value , TimeUnits
    Var -= Value , TimeUnits
    Var--

## 参数

Var

  要运算的变量名.

Value

  任何整数, 浮点数或表达式.

TimeUnits

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

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

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

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

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

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

## 备注

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

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

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

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

## 相关

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

## 示例

将 MyCount 设置为自身减 2.

    EnvSub, MyCount, 2

等同于上面的命令.

    MyCount -= 2

计算两个时间戳之间的天数, 并报告结果.

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

dftg