【问题标题】:Calculating Business Hours between Case Closed Date and Case Created Date计算案例结束日期和案例创建日期之间的工作时间
【发布时间】:2021-10-26 12:13:07
【问题描述】:

我有一个要求,我需要计算 Case closedDate 和 case CreatedDate 之间的营业时间,而不需要周六和周日。 任何人都可以帮助我解决如何实现的公式

【问题讨论】:

    标签: salesforce apex


    【解决方案1】:

    您是否真的在 SF 设置中使用 Calendar 对象、Holidays、BusinessHours 模型?

    https://help.salesforce.com/s/articleView?id=sf.customize_supporthours.htm&type=5 开箱即用的完整的 Apex 类和 diff 方法:https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_classes_businesshours.htm

    如果这太多了,您可以查看公式字段(https://developer.salesforce.com/docs/atlas.en-us.formula_date_time_tipsheet.meta/formula_date_time_tipsheet/formula_examples_dates.htm,“查找两个日期之间的工作日数”)


    假设您确实使用 apex 并调用了 BusinessHours.diff...

    Long differenceInMiliseconds = 12340000; // from BusinessHours.diff()
    String ret = DateTime.newInstance(differenceInMiliseconds).formatGmt('hh:mm:ss');
    System.debug(ret); // 03:25:40
    // 3 * 3600 + 25 * 60 + 40 = 10800 + 1500 + 40 = 12340, cool
    

    【讨论】:

    • 我得到了 Case ClosedDate 和 CreatedDate 之间的小时数,但我需要以下格式的 HH:MM:SS
    • 发布你到目前为止所拥有的,你尝试了什么。我们不是免费的编码服务。您将其标记为顶点,但我怀疑您没有实际代码,只有公式字段?如果您编写代码 - 除以 60 几次或使用 DateTime.format 不是火箭科学
    • 我只有工作日。由此我需要计算营业时间 ROUND( 8 * ( ( 5 * FLOOR( ( DATEVALUE( ClosedDate ) - DATE( 1900, 1, 8) ) / 7) + MIN(5, MOD( DATEVALUE( ClosedDate ) - DATE) 1900, 1, 8), 7) + MIN( 1, 24 / 8 * ( MOD( ClosedDate - DATETIMEVALUE( '1900-01-08 16:00:00' ), 1 ) ) ) ) - ( 5 * FLOOR ( ( DATEVALUE( CreatedDate ) - DATE( 1900, 1, 8) ) / 7) + MIN( 5, MOD( DATEVALUE( CreatedDate ) - DATE( 1996, 1, 1), 7 ) + MIN( 1, 24 / 8 * ( MOD( CreatedDate - DATETIMEVALUE( '1900-01-08 16:00:00' ), 1) ) ) ) ) ), 0 )
    • 对不起,这个公式我太清醒了。您可以尝试在salesforce.stackexchange.com 上发帖,这样更有可能被管理员和其他低代码用户看到。你用 apex 编程语言标记了它,所以我给你一个内置的,可以用几行代码计算它 - 但在公式字段中实现同样的事情可能会很棘手。
    猜你喜欢
    • 2017-05-26
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多