Avatar billede samsayit Nybegynder
01. juli 2005 - 18:48 Der er 5 kommentarer og
1 løsning

Formattering af datetime?

Jeg har et timestamp til rådighed, som jeg henter ud:
<xsl:value-of select="RecordCreated" />

Men denne er, når den vises, formatteret som en dateTime, altså ala:
2005-07-01T17:19:28

Kan jeg på en nem måde omslutte ovenstående <xsl:value-of... i en formatterings-funktion, så det udskrives på en "pæn" måde (uden time, minutter, sekunder), f.eks.:
1 July 2005

Jeg vil lige tilføje, at jeg ikke ved ret meget om xslt, men jeg er i færd med at sjusse mig igennem noget (en engangs-forestilling).
Avatar billede softspot Forsker
01. juli 2005 - 19:23 #1
hvis du ved det altid er det format, kan du evt. bruge funktionerne substring-before() og substring() til at splitte datoen ad. Noget i stil med:

<xsl:variable name="datepart" select="substring-before('2005-07-01T17:19:28','T')" />
<xsl:variable name="year" select="substring($datepart, 1,4)" />
<xsl:variable name="month" select="substring($datepart, 6,2)" />
<xsl:variable name="day" select="substring($datepart, 9,2)" />
<xsl:value-of select="$day" />
<xsl:call-template name="getmonth">
  <xsl:with-param name="month" select="$month" />
</xsl:call-template>
<xsl:value-of select="$year" />

funktionen getmonth kunne så se således ud:

<xsl:template name="getmonth">
  <xsl:param name="month" select="0" />

  <xsl:choose>
    <xsl:when test="$month=1">January</when>
    <xsl:when test="$month=2">Feburary</when>
    <xsl:when test="$month=3">March</when>
    <xsl:when test="$month=4">April</when>
    <xsl:when test="$month=5">May</when>
    <xsl:when test="$month=6">June</when>
    <xsl:when test="$month=7">July</when>
    <xsl:when test="$month=8">August</when>
    <xsl:when test="$month=9">September</when>
    <xsl:when test="$month=10">October</when>
    <xsl:when test="$month=11">November</when>
    <xsl:when test="$month=12">December</when>
    <xsl:otherwise>NOT SPECIFIED</xsl:otherwise>
  </xsl:choose>
</xsl:template>
Avatar billede softspot Forsker
01. juli 2005 - 22:44 #2
Ja, rent faktisk behøves man jo ikke lave den der substring-before som jeg startede med :)
Avatar billede samsayit Nybegynder
02. juli 2005 - 18:30 #3
Mange tak for feedback, softspot.
Jeg går ud fra, at jeg kan erstatte datoen med RecordCreated, altså:
<xsl:variable name="datepart" select="substring-before(RecordCreated,'T')" />
eller
<xsl:variable name="year" select="substring(RecordCreated, 1,4)" />

Som nævnt er jeg ikke nogen haj :) Jeg vil forsøge mig med ovenstående, og se om jeg kan få det til at virke (ikke helt sikker på, hvor i dokumentet jeg evt. skal placere linierne, men det er måske underordnet - jeg prøver ad :)
Avatar billede samsayit Nybegynder
02. juli 2005 - 18:56 #4
Perfekt! Det eneste jeg måtte rette i din kode var </when> sluttagget, som skulle være </xsl:when> - udover at indsætte RecordCreated istedet for timestampet, selvfølgelig.
Jeg siger mange tak!
Avatar billede samsayit Nybegynder
02. juli 2005 - 18:56 #5
Ups. Opret svar for point :)
Avatar billede softspot Forsker
03. juli 2005 - 20:41 #6
Sorry... jeg havde ikke testet det, og det gik lidt hurtigt med at taste det ind (man skal jo være hurtig for at komme først med svar herinde ;)

Glad for at du fik det til at fungere (trods alt) :)
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