| Functions | 适用范围 |
|---|---|
| DateAdd DateDiff |
|
| TimeZoneOffset |
|
| 函数 | 适用范围 |
|---|---|
| DateAdd | |
| DateDiff | |
| TimeZoneOffset |
加上或发现日期/时间值的差值,并转换本地时间和 UTC。
描述
该 DateAdd 函数将多个单位添加到日期/时间值。 结果是一个新的日期/时间值。 还可以指定负值,从日期/时间值中减去时间单位值。
该 DateDiff 函数返回两个日期/时间值之间的差异。 结果是整数个单位。
对于这两个函数,单位可以是 TimeUnit.Milliseconds、TimeUnit.Seconds、TimeUnit.Minutes、TimeUnit.Hours、TimeUnit.Days、TimeUnit.Months、TimeUnit.Quarters 或 TimeUnit.Years。 默认情况下,这两个函数都以 TimeUnit.Days 为单位。
该 TimeZoneOffset 函数返回用户本地时间和 UTC(协调世界时)之间的分钟数。
可以与 DateAdd 用户本地时间和 UTC(协调世界时)之间的转换一起使用 TimeZoneOffset 。 添加 TimeZoneOffset 会将本地时间转换为 UTC,并减去它(添加负时间)将从 UTC 转换为本地时间。
有关详细信息,另请参阅日期、时间和日期/时间数据类型和使用日期和时间。
语法
DateAdd( DateTime、 加 法 [、 单位 ] )
- DateTime - 必需。 要进行运算的日期/时间值。
- 添加 - 必需。 要在 DateTime 中加上的数值,以 Units 为单位。
- Units - 可选。 要添加的单位类型:TimeUnit.Milliseconds、TimeUnit.Seconds、TimeUnit.Minutes、TimeUnit.Hours、TimeUnit.Days、TimeUnit.Months、TimeUnit.Quarters 或 TimeUnit.Years。 如果未指定,则使用 TimeUnit.DaysDays。
DateDiff( StartDateTime、 EndDateTime [、 Units ] )
- StartDateTime - 必需。 开始日期/时间值。
- EndDateTime - 必需。 结束日期/时间值。
- Units - 可选。 要减去的单位类型:TimeUnit.Milliseconds、TimeUnit.Seconds、TimeUnit.Minutes、TimeUnit.Hours、TimeUnit.Days、TimeUnit.Months、TimeUnit.Quarters 或 TimeUnit.Years。 如果未指定,则使用 TimeUnit.DaysDays。
TimeZoneOffset( [ DateTime ] )
- DateTime - 可选。 要为其返回时间差的日期/时间值。 默认情况下,使用当前日期/时间。
示例
在下面所有示例中,假定当前日期和时间为 July 15, 2013, 1:02 PM。
简单 DateAdd
| 公式 | 描述 | 结果 |
|---|---|---|
|
文本(现在( DateAdd,3), “dd-mm-yyyy hh:mm” ) |
在当前日期和时间中加上三天(默认时间单位)。 | "18-07-2013 13:02" |
|
文本(现在( DateAdd),4,TimeUnit.Hours), “dd-mm-yyyy hh:mm” ) |
在当前日期和时间中加上四小时。 | "15-07-2013 17:02" |
|
文本(今天( DateAdd),1,TimeUnit.Month, “dd-mm-yyyy hh:mm” ) |
在当前日期(无时间)中加上一个月,因为 Today 不返回时间组件。 | "15-08-2013 00:00" |
|
文本(现在( DateAdd), -30, TimeUnit.Minutes ), “dd-mm-yyyy hh:mm” ) |
从当前日期和时间中减去 30 分钟。 | "15-07-2013 12:32" |
简单 DateDiff
| 公式 | 描述 | 结果 |
|---|---|---|
| DateDiff(Now()、 DateValue(“2014/1/1”) | 返回两个时间单位(默认时间单位为 TimeUnit.Days)差值 | 170 |
| DateDiff(Now()、 DateValue(“2014/1/1”),TimeUnit.Months ) | 返回两个时间单位 (TimeUnit.Months) 差值 | 6 |
| DateDiff(现在()、今天()、TimeUnit.Minutes) | 返回当前日期/时间和仅当前日期(没有时间)的差值(以分钟为单位)。 由于 Now 晚于 Today,因此结果将为负数。 | -782 |
日期与分数结果的差值
该函数 DateDiff 只返回正在减去的单位的整数,并且精度在指定的单位中给出。 要以更高的精度计算差值,请使用更小单位,然后适当转换结果,如以下示例所示。
| 公式 | 描述 | 结果 |
|---|---|---|
| DateDiff(TimeValue(“09:45:00”),TimeValue(“10:15:36”),TimeUnit.Hours) | 分钟/秒将被忽略,差值以最多一小时的时间为基础。 | 1 |
| DateDiff(TimeValue(“09:45:00”),TimeValue(“10:15:36”),TimeUnit.Minutes )/60 | 差值使用分钟,将结果除以 60 得到小时差值。 | 0.5 |
| DateDiff(TimeValue(“09:45:00”),TimeValue(“10:15:36”),TimeUnit.Seconds )/3600 | 差值使用分钟和秒;将结果除以 3600 得到小时差值。 | 0.51 |
转换为 UTC
若要转换为 UTC(协调世界时),请添加 TimeZoneOffset 给定时间。
例如,假设当前日期和时间为 July 15, 2013, 1:02 PM,使用太平洋夏令时(PDT、UTC-7)。 若要确定当前 UTC,请使用:
- DateAdd(现在() TimeZoneOffset()、 TimeUnit.Minutes )
TimeZoneOffset 默认为当前时间,因此无需向其传递参数。
若要查看结果,请使用格式为 dd-mm-yyyy hh:mm 的 Text 函数,这将返回 15-07-2013 20:02。
从 UTC 转换
若要从 UTC 转换,请减去 TimeZoneOffset 给定时间的(通过添加负数)。
例如,假设将 UTC 日期和时间 July 15, 2013, 8:02 PM 存储到名为 StartTime 的变量中。 若要调整用户时区时间,请使用:
- DateAdd( StartTime, ~TimeZoneOffset(StartTime)、TimeUnit.Minutes)
请注意负号,然后再 TimeZoneOffset 减去偏移量,而不是添加偏移量。
若要查看结果,请使用格式为 dd-mm-yyyy hh:mm 的 Text 函数,这将返回 15-07-2013 13:02(如果使用太平洋夏令时)。