【问题标题】:How to remove weekdays in duration data type NAV如何删除持续时间数据类型 NAV 中的工作日
【发布时间】:2017-10-27 06:46:39
【问题描述】:

如何在 CAL 中删除数据类型持续时间中的工作日?

例如: 持续时间:= datetime2 - datetime1

但持续时间确实包含周六和周日。我怎样才能删除它们?

【问题讨论】:

    标签: microsoft-dynamics navision dynamics-nav microsoft-dynamics-nav


    【解决方案1】:

    简单的回答:你不能。

    但是您可以使用Date 虚拟表。像这样的:

    Date.SETRANGE("Period Type", Date."Period Type"::Date);
    Date.SETFILTER("Period Start", '%1..%2', DT2DATE(datetime1), DT2DATE(datetime2));
    Date.SETRANGE("Period No.", 1, 5); // only days 1 - 5 = weekdays
    EXIT(Date.COUNT); // returns number of days
    

    然后,您可以通过简单的乘法将天数转换为持续时间。 Duration 只不过是毫秒数。

    1 小时 = 3600000 毫秒。

    因此:

    MESSAGE('%1', NoOfDays);
    dur := NoOfDays * 24 * 3600 * 1000;
    MESSAGE('%1', dur);
    

    【讨论】:

    • 我怎样才能将整数(我将得到你建议的总天数)转换为持续时间。你有什么想法吗?
    • @lam 简单回答——你不能
    • @Mak Sim 你错了。你可以。 IntegerDuration 可以相互分配。我已经更新了我的答案。
    • @Hemisphera 我知道他们是。持续时间基本上是一个整数。但这不是所要求的。 @Lam 希望在两个时间点之间有持续时间,不包括周末。因此,仅将天数乘以毫秒将不是答案。你需要类似duration := datetime2 - datetime1 - DurationOfAllWeekends
    • 是的,答案是,如果我已经乘以的天数是没有周末的天数。就我而言,它们是,因为我使用Date 表来查找天数,而不是计算周末。当然,这样你只能计算一整天。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-28
    • 2020-06-10
    • 1970-01-01
    • 1970-01-01
    • 2015-03-29
    • 1970-01-01
    相关资源
    最近更新 更多