可以添加一个日期 x
时间和一个持续时间来计算一个新的日期时间,它与线性时间轴上的距离正好是 的大小。在这里,datetime代表, , , or 中的任何一个,并且非空结果将是相同的类型。可以按如下方式计算日期时间偏移的持续时间:yx + yxyDateDateTimeDateTimeZoneTime
以下示例显示当 datetime 指定自 epoch 以来的天数时计算绝对时间总和:
复制
#date(2010,05,20) + #duration(0,8,0,0)
//#datetime( 2010, 5, 20, 8, 0, 0 )
//2010-05-20T08:00:00
#date(2010,01,31) + #duration(30,08,0,0)
//#datetime(2010, 3, 2, 8, 0, 0)
//2010-03-02T08:00:00
#datetime(2010,05,20,12,00,00,-08) + #duration(0,04,30,00)
//#datetime(2010, 5, 20, 16, 30, 0, -8, 0)
//2010-05-20T16:30:00-08:00
#datetime(2010,10,10,0,0,0,0) + #duration(1,0,0,0)
//#datetime(2010, 10, 11, 0, 0, 0, 0, 0)
//2010-10-11T00:00:00+00:00
以下示例显示了按给定时间的持续时间计算日期时间偏移量:
复制
#time(8,0,0) + #duration(30,5,0,0)
//#time(13, 0, 0)
//13:00:00
减法运算符 ( x - y
)的解释取决于求值表达式x
和的值类型y
,如下所示:
X | 是 | 结果 | 解释 |
---|---|---|---|
type number | type number | type number | 数值差异 |
type number | null | null | |
null | type number | null | |
type duration | type duration | type duration | 数量级差 |
type duration | null | null | |
null | type duration | null | |
type 约会时间 | type 约会时间 | type duration | 日期时间之间的持续时间 |
type 约会时间 | type duration | type 约会时间 | 否定持续时间的日期时间偏移 |
type 约会时间 | null | null | |
null | type 约会时间 | null | |
在该表中,type
日期时间代表任何的type date
,type datetime
,type datetimezone
,或type time
。从某种类型的datetime值中减去持续时间时,结果值属于相同类型。
对于表中所列值以外的其他值组合,将"Expression.Error"
引发带有原因代码的错误。以下各节介绍了每种组合。
传播评估任一操作数时引发的错误。
使用减法运算符计算两个数字之间的差值,产生一个数字。例如:
复制
1 - 1 // 0
#nan - #infinity // #nan
-
数字上的减法运算符使用双精度;标准库函数Value.Subtract
可用于指定小数精度。在计算数字差异时,以下内容成立:
x
和y
是非零有限值,z
是 的结果x - y
。如果x
和y
相等,z
则为正零。如果x - y
太大而无法在目标类型中表示,z
则是与 具有相同符号的无穷大x - y
。
表 9——是+0-0+∞-∞NaNXzXX-∞+∞NaN+0-y+0+0-∞+∞NaN-0-y-0+0-∞+∞NaN+∞+∞+∞+∞NaN+∞NaN-∞-∞-∞-∞-∞NaNNaNNaNNaNNaNNaNNaNNaNNaN两个持续时间的差值是表示每个持续时间所代表的 100 纳秒滴答数之差的持续时间。例如:
复制
#duration(1,2,30,0) - #duration(0,0,0,30.45)
// #duration(1, 2, 29, 29.55)
一个日期时间 x
和持续时间y
可以使用减去x - y
计算新的日期时间。在这里,日期时间代表任何的date
,datetime
,datetimezone
,或time
。生成的日期x
时间与线性时间轴上的距离正好是 的大小y
,在 的符号相反的方向上y
。减去正持续时间会产生相对于 的时间向后的结果x
,而减去负值会产生时间向前的结果。
复制
#date(2010,05,20) - #duration(00,08,00,00)
//#datetime(2010, 5, 19, 16, 0, 0)
//2010-05-19T16:00:00
#date(2010,01,31) - #duration( 30,08,00,00)
//#datetime(2009, 12, 31, 16, 0, 0)
//2009-12-31T16:00:00
两个日期时间, t
并且u
可以减去t - u
用于计算它们之间的持续时间。在这里,日期时间代表任何的date
,datetime
,datetimezone
,或time
。通过减去u
from产生的持续时间在添加到 时t
必须产生。tu
复制
#date(2010,01,31) - #date(2010,01,15)
// #duration(16,00,00,00)
// 16.00:00:00
#date(2010,01,15)- #date(2010,01,31)
// #duration(-16,00,00,00)
// -16.00:00:00
#datetime(2010,05,20,16,06,00,-08,00) -
#datetime(2008,12,15,04,19,19,03,00)
// #duration(521,22,46,41)
// 521.22:46:41
减去t - u
whenu > t
结果为负持续时间:
复制
#time(01,30,00) - #time(08,00,00)
// #duration(0, -6, -30, 0)
使用减去两个日期时间时,以下内容成立t - u
:
乘法运算符 ( x * y
)的解释取决于计算表达式 x 和 y 的值类型,如下所示:
X | 是 | 结果 | 解释 |
---|---|---|---|
type number | type number | type number | 数积 |
type number | null | null | |
null | type number | null | |
type duration | type number | type duration | 持续时间的倍数 |
type number | type duration | type duration | 持续时间的倍数 |
type duration | null | null | |
null | type duration | null | |
对于表中所列值以外的其他值组合,将"Expression.Error"
引发带有原因代码的错误。以下各节介绍了每种组合。
传播评估任一操作数时引发的错误。
使用乘法运算符计算两个数字的乘积,产生一个数字。例如:
复制
2 * 4 // 8
6 * null // null
#nan * #infinity // #nan
*
数字上的乘法运算符使用双精度;标准库函数Value.Multiply
可用于指定小数精度。在计算数字的乘积时,以下内容成立:
x
和y
是正的有限值。z
是 的结果x * y
。如果结果对于目标类型来说太大,z
则为无穷大。如果结果对于目标类型来说太小,z
则为零。
表 11*+y-y+0-0+∞-∞NaN+x+z-z+0-0+∞-∞NaN-X-z+z-0+0-∞+∞NaN+0+0-0+0-0NaNNaNNaN-0-0+0-0+0NaNNaNNaN+∞+∞-∞NaNNaN+∞-∞NaN-∞-∞+∞NaNNaN-∞+∞NaNNaNNaNNaNNaNNaNNaNNaNNaN持续时间和数字的乘积是表示持续时间操作数所代表的 100 纳秒滴答数的持续时间乘以数字操作数。例如:
复制
#duration(2,1,0,15.1) * 2
// #duration(4, 2, 0, 30.2)
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。