You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spotfire:计算两个日期在工作日工作时段(8-17点)的时间戳差值

计算工作日工作时段内的时间差(Spotfire)

要计算仅在工作日(排除周末)8:00-17:00时段内的小时数,不能直接用Datediff("HH", ...),需要拆分三个部分计算:开始日期当天的有效工作时长、结束日期当天的有效工作时长、中间完整工作日的总时长,再将三者相加。

核心思路

  1. 每天固定工作时长为9小时(17:00-8:00)
  2. 单独计算开始/结束日期的有效时长:
    • 若开始时间早于8:00,从8:00起算;晚于17:00,当天有效时长为0
    • 若结束时间晚于17:00,算到17:00;早于8:00,当天有效时长为0
  3. 计算开始和结束日期之间的完整工作日数(排除周末,不含开始/结束当天),乘以每天9小时

Spotfire计算列表达式

直接在Spotfire中创建计算列,使用以下表达式:

// 定义工作时段参数
Define StartWorkTime = Time("08:00:00")
Define EndWorkTime = Time("17:00:00")
Define DailyWorkHours = DateDiff("hh", StartWorkTime, EndWorkTime) + DateDiff("mi", StartWorkTime, EndWorkTime)/60 + DateDiff("ss", StartWorkTime, EndWorkTime)/3600

// 计算开始日有效时长
Define StartDayHours = 
Case
  When Time([Start Date]) > EndWorkTime Then 0
  When Time([Start Date]) < StartWorkTime Then DailyWorkHours
  Else DateDiff("hh", Time([Start Date]), EndWorkTime) + DateDiff("mi", Time([Start Date]), EndWorkTime)/60 + DateDiff("ss", Time([Start Date]), EndWorkTime)/3600
End

// 计算结束日有效时长
Define EndDayHours = 
Case
  When Time([End Date]) > EndWorkTime Then DailyWorkHours
  When Time([End Date]) < StartWorkTime Then 0
  Else DateDiff("hh", StartWorkTime, Time([End Date])) + DateDiff("mi", StartWorkTime, Time([End Date]))/60 + DateDiff("ss", StartWorkTime, Time([End Date]))/3600
End

// 计算中间完整工作日数量
Define StartOfMidPeriod = DateAdd("dd", 1, [Start Date])
Define EndOfMidPeriod = DateAdd("dd", -1, [End Date])
Define MidWorkDays = 
Case
  When StartOfMidPeriod > EndOfMidPeriod Then 0
  Else (DateDiff("dd", StartOfMidPeriod, EndOfMidPeriod) + 1) 
       - DateDiff("ww", StartOfMidPeriod, EndOfMidPeriod, 1)
       - DateDiff("ww", StartOfMidPeriod, EndOfMidPeriod, 2)
End

// 总有效工作时长
MidWorkDays * DailyWorkHours + StartDayHours + EndDayHours

验证你的示例

你的示例中:

  • 开始日期:19/08/2022 09:42:13(周五,工作时段内)
  • 结束日期:22/08/2022 09:54:22(周一,工作时段内)
  • 中间日期为20、21号(周末,无有效工作日)

计算结果:

  • 开始日有效时长:17:00 - 09:42:13 ≈7.296小时
  • 结束日有效时长:09:54:22 - 08:00:00 ≈1.906小时
  • 总时长≈7.296+1.906≈9.20小时

注:若你期望的8.13小时是手动计算误差,可检查工作时段定义或日期是否有误。

内容的提问来源于stack exchange,提问作者Spotfire_new

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 09:10:28