【问题标题】:How can one check today's day of the week in Youtrack Workflow如何在 Youtrack Workflow 中查看星期几
【发布时间】:2013-10-07 11:33:45
【问题描述】:

我希望仅在工作日执行某个计划规则(带有通知)。 IE。我想避免在周六和周日收到通知。如何在 YouTrack Workflow 中查看当前的星期几?

【问题讨论】:

    标签: youtrack


    【解决方案1】:

    使用格式,您可以获得星期的缩写或全名。

    var dayOfWeekAbr = now.format(#E);
    var dayOfWeek = now.format(#EEEE);
    

    或者使用年-月-日字面量(2014-01-05 是星期日):

    var day = (created - 2014-01-05).millis / 86400000 % 7; 
    if (day > 1 && day < 6) { 
      message("Work day"); 
    }
    

    【讨论】:

    • 是否有一些可以查看所有日期格式选项的参考资料?我只找到了 confluence.jetbrains.com/display/YTD5/… ,但这只是一个概述。我问的原因是因为很难使用云中的 Youtrack 测试工作流脚本,因为我不想弄乱我们的生产设置。 IE。是否有可以返回星期几的格式选项?
    • 认为使用格式不能取星期几。我猜格式字符串是gwt DateTimeFormat 的子集
    【解决方案2】:

    没有用于定义当前星期几的内置 YouTrack 工作流机制,但简单的解决方法允许这样做:

    schedule rule day of week
    
    daily at 10:00:00 [for all issues] { 
      var monday = {issue: A-1}.created - 1 day; 
    
      while (i < 50) { 
        if (monday + (i * 7) days < now && now < monday + (i * 7 + 5) days) { 
          //now is the work day
      }
    }
    

    问题A-1 是周二创建的示例问题,因此{issue: A-1}.created - 1 day 指的是Monday

    while 循环查找当前周,if() 定义今天是工作日还是周末。

    【讨论】:

    • 是否应该定义“i”然后递增?
    • 我也在考虑这样的默默无闻是否值得:)
    【解决方案3】:

    我遇到了同样的问题,我发现以前的解决方案不可读。 我实施的解决方案:

    var today = now.format(utc).substring(0, 3); 
    if (today == "Mon" || today == "Tue" || today == "Wed" || today == "Thu" || today == "Fri") { 
      message("Work day!"); 
    }
    

    【讨论】:

      【解决方案4】:

      可能是专门用于避免周末的最短解决方案,因为周六和周日是唯一以大写“S”开头的日子:

      if(!now.format(#E).startsWith("S", opts)) {}

      /e:正如 Artem 正确指出的那样,这可能必须采用或不适用于某些本地化 - 它至少适用于德语和英语。

      【讨论】:

      • 有趣的想法,但这种方法可能存在本地化问题 :)
      猜你喜欢
      • 1970-01-01
      • 2021-11-19
      • 2011-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-29
      • 2013-12-31
      • 1970-01-01
      相关资源
      最近更新 更多