【问题标题】:Comparing a date with a list of dates将日期与日期列表进行比较
【发布时间】:2014-05-23 14:08:15
【问题描述】:

我有一个列出假期日期的视图。我的表格上有一个日期字段,它需要与我的假期日期列表不同。所以我创建了一个验证器来检查它。

<xp:validateExpression message="İzin başlangıcı resmi tatillere denk gelemez.">
    <xp:this.expression>
        <![CDATA[#{javascript:var dHolidays = @DbColumn(@DbName(),"(lookupHoliday)", 1);
            !@IsMember(value, dHolidays)}]]>
    </xp:this.expression>
</xp:validateExpression>

这在公式语言上效果很好,但 xpages 有一些古怪的日期格式,我无法比较。

【问题讨论】:

  • 我已经通过序列化视图中的日期并将其作为字符串进行比较来解决我的问题。这很好用,但我想知道是否有适当且实用的方法来做到这一点。 var dHolidays = @DbColumn(@DbName(),"(lookupHolidaySerialized)", 1); sValue = @Right(@Text(100+@Day(value)),2) + "." + @Right(@Text(100+@Month(value)),2) + "." + @Text(@Year(值)); !@IsMember(sValue, dHolidays)

标签: javascript date compare xpages


【解决方案1】:

您可以使用java.text.SimpleDateFormat 将日期值转换为字符串并在 validateExpression 中进行比较:

    var sdf = new java.text.SimpleDateFormat("dd/MM/yyyy");
    var dHolidays = @DbColumn(@DbName(),"(lookupHoliday)", 1);
    var newDate = sdf.format(value);
    for (var i=0; i < dHolidays.length; i++) {
        if (sdf.format(dHolidays[i]) === newDate) {
            return false;
        }
    }
    return true;

您可以通过这种方式在视图的第一列中列出正常的 Notes 日期(而不是字符串)。

【讨论】:

  • 预格式化日期是一个很好的做法。这对我有很大帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-03
  • 1970-01-01
  • 1970-01-01
  • 2016-11-04
  • 1970-01-01
相关资源
最近更新 更多