是否可以从XSL1.0的开始日期和结束日期开始输入YEAR + WEEKNUMBER的代码?

时间:2019-05-09 10:20:42

标签: xml xslt xslt-1.0

我有一个XML文件,但没有太多信息。我想从以以下格式显示日期的节点中获取周号:YYYY-MM-DD

我想要以下内容:YYYY“ W” WW

W代表星期数,例如2019W20

我尝试了一些带有日期子字符串的代码,但是我得到的唯一结果是例如2019M04。所以我一年又一个月。这是合乎逻辑的,因为从中获取结果的节点中没有周数。我不知道如何从中获得周数。

<TimeInterval type="regular" billable="true">
<StartDateTime>2019-04-22T00:00:00Z</StartDateTime>
<EndDateTime>2019-04-28T00:00:00Z</EndDateTime>
<Duration>7.00</Duration>
<RateOrAmount currency="EUR" type="Hourly" multiplier="100.00">22.16</RateOrAmount>
<AdditionalData>
<CustomerReportingRequirements>
<PurchaseOrderLineItem>0</PurchaseOrderLineItem>
</CustomerReportingRequirements>
</AdditionalData>
</TimeInterval>

我希望或者我很愿意获得2019W17的结果,因为4月22日至4月28日是第17周

1 个答案:

答案 0 :(得分:1)

EXSLT日期/时间库中有一个提供此功能的模板:请参见http://exslt.org/date/functions/week-in-year/date.week-in-year.template.xsl

要使用此功能:

  • 将引用的样式表复制到本地文件date.week-in-year.template.xsl
  • 添加到呼叫样式表public static void main(String[] args) { ChangeID(id); } static String ChangeID(String id) { Random RNG = new Random(); String nID = ""; try { int number = Integer.parseInt(id.charAt(0) + ""); int numberNew = RNG.nextInt(number) + 1; nID += "" + numberNew; String sub = id.substring(1); nID += sub; int pos = nID.indexOf("R"); String left = nID.substring(0, pos); String right = nID.substring(pos + 1); nID = left + "rr" + right; } catch (NumberFormatException e) { } return nID; }
  • 使用以下方法调用转化:

代码:

<xsl:include href="date.week-in-year.template.xsl"/>

其中<xsl:variable name="week-number"> <xsl:call-template name="date:week-in-year" xmlns:date="http://exslt.org/dates-and-times"> <xsl:with-param name="date-time" select="$input"/> </xsl:call-template> </xsl:variable> 是所提供的日期时间,格式为YYYY-MM-DD。