【问题标题】:SharePoint custom list date and time validationSharePoint 自定义列表日期和时间验证
【发布时间】:2015-04-27 18:19:10
【问题描述】:

我有一个自定义列表,我试图限制有效星期几和时间的数据输入。 我当前的列验证适用于星期一、星期三或星期五的星期几。它看起来像这样:

=CHOOSE(WEEKDAY([Requested date for approval]),FALSE,TRUE,FALSE,TRUE,FALSE,TRUE,FALSE)

我正在尝试找出语法来添加它也必须在那些日子的上午 8 点到下午 12:00 之间。

任何帮助将不胜感激。

【问题讨论】:

    标签: date sharepoint time validating


    【解决方案1】:

    您可以使用 AND 语句来包含第二个条件

    =AND(CHOOSE(WEEKDAY([Requested date for approval]),FALSE,TRUE,FALSE,TRUE,FALSE,TRUE,FALSE),
      AND(
        [Requested date for approval]-INT([Requested date for approval])*24 >= 8,
        [Requested date for approval]-INT([Requested date for approval])*24 <= 24
      )
    )
    

    我承认,我从来没有听说过 CHOOSE 功能,但是时间计算是基于微软的信息

    转换时间 要将小时从标准时间格式转换为十进制数,请使用 INT 功能。

    Column1 公式 说明(可能的结果)
    10:35 AM =([Column1]-INT([Column1]))*24 自 12:00 AM (10.583333) 以来的小时数
    12:15 PM =([Column1]-INT([Column1]))*24 自 12:00 AM (12.25) 起的小时数

    编辑

    要计算星期几,可以使用 TEXT 函数返回星期几(即星期一)

    =TEXT(WEEKDAY([ColumnName]), "dddd")
    

    它不会很漂亮,但你可以使用一系列 AND 逻辑运算符

    =AND(
      TEXT(WEEKDAY([Requested date for approval]), "dddd") = "Monday",
      AND(
        TEXT(WEEKDAY([Requested date for approval]), "dddd") = "Wednesday",
        AND(
          TEXT(WEEKDAY([Requested date for approval]), "dddd") = "Friday",
          AND(
            [Requested date for approval]-INT([Requested date for approval])*24 >= 8,
            [Requested date for approval]-INT([Requested date for approval])*24 <= 24
          )
        )
      )
    )
    

    发布工作解决方案

    =IF(
      AND(
        CHOOSE(
          WEEKDAY([Requested date for approval]),FALSE,TRUE,FALSE,TRUE,FALSE,TRUE,FALSE
        ),
        ([Requested date for approval]-INT([Requested date for approval]))*24>=8,
        ([Requested date for approval]-INT([Requested date for approval]))*24<=12
      ),
      TRUE
    )
    

    【讨论】:

    • 所以看起来我的选择声明来自这里 (sharepoint.stackexchange.com/questions/136423/…) 和时间验证,似乎不能很好地配合使用。没有日期和时间组合将起作用。你说你从来没有听说过“选择”,用什么来代替星期几?
    • 谢谢,它确实抱怨语法错误,但这是一个很好的起点。
    • 我确定某处缺少括号。在非本地环境中编写未经测试的代码时所承担的风险:)
    • 嗯,我看到最大的问题是等号太多。开头应该只有那个。
    • 这是我们实际提出的解决方案。没有你的帮助是做不到的:=IF(AND(CHOOSE(WEEKDAY([请求批准日期]),FALSE,TRUE,FALSE,TRUE,FALSE,TRUE,FALSE),([请求批准日期]- INT([申请批准日期]))*24>=8,([申请批准日期]-INT([申请批准日期]))*24
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多