Umbraco.library:DateDiff()与umbraco Datepicker文档类型字段值一起使用时引发错误

时间:2012-03-12 14:03:50

标签: xslt umbraco

我正在尝试将Datepicker 中设置的日期值(umbraco文档类型字段)与当前日期进行比较(umbraco.library:FormatDateTime(umbraco.library:CurrentDate) ())在 umbraco cms(版本4.7)提供的 XSLT 中。

我用于此的功能是,

  Umbraco.library:DateDiff($expiryDate, $currentDate, 's')

XSLT抛出以下错误,

 Error occured

 System.FormatException: String was not recognized as a valid DateTime. 
 at System.DateTimeParse.Parse(String s, DateTimeFormatInfo dtfi, DateTimeStyles     styles) 
 at umbraco.library.DateDiff(String firstDate, String secondDate, String diffType)

我确信这与datepicker值的某些问题有关。普通日期字符串而不是datepicker值运行良好。

如果有人遇到这种情况,请帮帮我。

修改: 请参阅下面的XSLT中使用的日期差异代码,

  <xsl:variable name="currentDate" select="umbraco.library:FormatDateTime(umbraco.library:CurrentDate(), 'yyyy-MM-dd')"/>  
  Now:<xsl:value-of select="$currentDate"/><br/> 

  <xsl:variable name="expiryDate" select="umbraco.library:FormatDateTime($node/expiryDate, 'yyyy-MM-dd')"/>
  Exp:<xsl:value-of select="$expiryDate"/><br/> // Where **$node/expiryDate** is my datepicker value

   <xsl:variable name="diffInSecs" select="umbraco.library:DateDiff($expiryDate, $currentDate, 's')"/> 
  Diff :<xsl:value-of select="$diffInSecs"/>   

1 个答案:

答案 0 :(得分:2)

您必须首先确保两个日期的格式相同,因此您应该使用:

<xsl:variable name="currentDate"
   select="umbraco.library:FormatDateTime(umbraco.library:CurrentDate(),
      'dd/MM/yyyy')" />

<xsl:variable name="formattedExpiryDate"
   select="umbraco.library:FormatDateTime($expiryDate, 'dd/MM/yyyy')" />