Avatar billede martin_moth Mester
11. juli 2005 - 09:20 Der er 5 kommentarer og
1 løsning

Omskriv en dato

I et xsl-dokument står følgende:

<xsl:value-of select="concat(@lastRevisedBy, '  ', @lastRevisedDate)"/>

Det uheldige er, at det bliver udskrivet som

Anders 24-06-2005 01:36:01

Jeg ville jo gerne have at der stod
"24. juni 2005 kl. 24-06-2005 01:36:01"
eller, hvis det er umuligt, bare
"24/6 2005 kl. 24-06-2005 01:36:01"

Det sidste burde vel være muligt med number(). Men - kan man ikke få det udskrevet med månedsnavne?
Avatar billede martin_moth Mester
11. juli 2005 - 09:21 #1
Vrøvl - jeg ville gerne at der stod:

"Anders, 24. juni 2005 kl. 01:36:01"

alternativt,
"Anders, 24/6 2005 kl. 01:36:01"
Avatar billede thor.ostergaard Nybegynder
11. juli 2005 - 11:29 #2
Det afhænger lidt af hvilken xsl parser du bruger. Det lader til, at MSXML 4 har en format-date funktion, men jeg er ikke sikker på, at du vil kunne bruge den, da dit dato format ikke er korrekt XML dato-format (MM-DD-YYYYTHH:MM:SS (som jeg lige husker det))

Det er muligt, at ud kan komme rundt om det denne vej (har ikke testet det):
<xsl:stylesheet version="1.0"
              xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
              xmlns:msxsl="urn:schemas-microsoft-com:xslt"
              xmlns:dates="urn:rdcpro-com:dates"
              >
  <xsl:output method="html" encoding="UTF-8"/>
  <msxsl:script language="JScript" implements-prefix="dates">
      <![CDATA[
          function parseDate(oNodeList) {
          // construct a dateString from your node
          var dateString = oNodeList[0].text.substr(0, 4) + "-" + oNodeList[1].text.substr(4, 2) + "-" + oNodeList[2].text.substr(6, 2);
          var t = Date.parse(dateString);
          return t;
          }
          function formatDate(t) {
          arrMonth = new Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
          var oDate = new Date(t);
          return arrMonth[oDate.getMonth()] + " " + oDate.getDate() + "," + oDate.getFullYear();
          }
      ]]>
  </msxsl:script>


Call the extension function with:

<xsl:value-of select="dates:formatDate(dates:parseDate(Date))"/>

Eller en variant af denne (mon ikke du kan finde ud af at tilpasse det til dit eget datoformat?)
<xsl:variable name="date-only" select="substring-before($date, 'T')" />
  <xsl:variable name="time-only" select="substring-after($date, 'T')" />
  <xsl:variable name="year" select="substring-before($date-only, '-')" />
  <xsl:variable name="month" select="substring-before(substring-after($date-only, '-'), '-')" />
  <xsl:variable name="day" select="substring-after(substring-after($date-only, '-'), '-')" />

  <xsl:variable name="hour" select="substring-before($time-only, ':')" />
  <xsl:variable name="minutes" select="substring-before(substring-after($time-only, ':'), ':')" />
  <xsl:variable name="seconds" select="substring-after(substring-after($time-only, ':'), ':')" />
Avatar billede martin_moth Mester
11. juli 2005 - 13:21 #3
Ahhh - du putter et lille script ind. Ovenstående ser fint ud vender tilbage.
Avatar billede thor.ostergaard Nybegynder
27. juli 2005 - 10:39 #4
Er du kommet videre?
Avatar billede martin_moth Mester
16. november 2005 - 07:49 #5
ja. smid svar
Avatar billede martin_moth Mester
21. november 2005 - 16:14 #6
Ingen svar. lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester