The Date Tool is an additional tool created by Hannon Hill specifically for Cascade Server Velocity scripts.
A quick ${_EscapeTool.dollar}_DateTool example:
Consider the following Velocity:
#set($string = '1982' )
#set( $date = $_DateTool.toDate("yyyy",$string))
$_DateTool.format('E, d MMM y k:mm:ss', $date))
Want to know the result? Click here or read the next section, learn more while scrolling to the bottom of the page.
My CD Collection
This example will use DateTool to display the album release year for the CD and then calculate the # of years since the album was released.
Consider this XML data:
<catalog>
<cd>
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<country>USA</country>
<company>Columbia</company>
<price>10.90</price>
<year>1985</year>
</cd>
<cd>
<title>Hide your heart</title>
<artist>Bonnie Tyler</artist>
<country>UK</country>
<company>CBS Records</company>
<price>9.90</price>
<year>1988</year>
</cd>
<cd>
<title>Greatest Hits</title>
<artist>Dolly Parton</artist>
<country>USA</country>
<company>RCA</company>
<price>9.90</price>
<year>1982</year>
</cd>
<cd>
<title>Still got the blues</title>
<artist>Gary Moore</artist>
<country>UK</country>
<company>Virgin records</company>
<price>10.20</price>
<year>1990</year>
</cd>
<cd>
<title>Eros</title>
<artist>Eros Ramazzotti</artist>
<country>EU</country>
<company>BMG</company>
<price>9.90</price>
<year>1997</year>
</cd>
<cd>
<title>One night only</title>
<artist>Bee Gees</artist>
<country>UK</country>
<company>Polydor</company>
<price>10.90</price>
<year>1998</year>
</cd>
<cd>
<title>Sylvias Mother</title>
<artist>Dr.Hook</artist>
<country>UK</country>
<company>CBS</company>
<price>8.10</price>
<year>1973</year>
</cd>
<cd>
<title>Maggie May</title>
<artist>Rod Stewart</artist>
<country>UK</country>
<company>Pickwick</company>
<price>8.50</price>
<year>1990</year>
</cd>
<cd>
<title>Romanza</title>
<artist>Andrea Bocelli</artist>
<country>EU</country>
<company>Polydor</company>
<price>10.80</price>
<year>1996</year>
</cd>
<cd>
<title>When a man loves a woman</title>
<artist>Percy Sledge</artist>
<country>USA</country>
<company>Atlantic</company>
<price>8.70</price>
<year>1987</year>
</cd>
<cd>
<title>Black angel</title>
<artist>Savage Rose</artist>
<country>EU</country>
<company>Mega</company>
<price>10.90</price>
<year>1995</year>
</cd>
<cd>
<title>1999 Grammy Nominees</title>
<artist>Many</artist>
<country>USA</country>
<company>Grammy</company>
<price>10.20</price>
<year>1999</year>
</cd>
<cd>
<title>For the good times</title>
<artist>Kenny Rogers</artist>
<country>UK</country>
<company>Mucik Master</company>
<price>8.70</price>
<year>1995</year>
</cd>
<cd>
<title>Big Willie style</title>
<artist>Will Smith</artist>
<country>USA</country>
<company>Columbia</company>
<price>9.90</price>
<year>1997</year>
</cd>
<cd>
<title>Tupelo Honey</title>
<artist>Van Morrison</artist>
<country>UK</country>
<company>Polydor</company>
<price>8.20</price>
<year>1971</year>
</cd>
<cd>
<title>Soulsville</title>
<artist>Jorn Hoel</artist>
<country>Norway</country>
<company>WEA</company>
<price>7.90</price>
<year>1996</year>
</cd>
<cd>
<title>The very best of</title>
<artist>Cat Stevens</artist>
<country>UK</country>
<company>Island</company>
<price>8.90</price>
<year>1990</year>
</cd>
<cd>
<title>Stop</title>
<artist>Sam Brown</artist>
<country>UK</country>
<company>A and M</company>
<price>8.90</price>
<year>1988</year>
</cd>
<cd>
<title>Bridge of Spies</title>
<artist>T`Pau</artist>
<country>UK</country>
<company>Siren</company>
<price>7.90</price>
<year>1987</year>
</cd>
<cd>
<title>Private Dancer</title>
<artist>Tina Turner</artist>
<country>UK</country>
<company>Capitol</company>
<price>8.90</price>
<year>1983</year>
</cd>
<cd>
<title>Midt om natten</title>
<artist>Kim Larsen</artist>
<country>EU</country>
<company>Medley</company>
<price>7.80</price>
<year>1983</year>
</cd>
<cd>
<title>Pavarotti Gala Concert</title>
<artist>Luciano Pavarotti</artist>
<country>UK</country>
<company>DECCA</company>
<price>9.90</price>
<year>1991</year>
</cd>
<cd>
<title>The dock of the bay</title>
<artist>Otis Redding</artist>
<country>USA</country>
<company>Atlantic</company>
<price>7.90</price>
<year>1987</year>
</cd>
<cd>
<title>Picture book</title>
<artist>Simply Red</artist>
<country>EU</country>
<company>Elektra</company>
<price>7.20</price>
<year>1985</year>
</cd>
<cd>
<title>Red</title>
<artist>The Communards</artist>
<country>UK</country>
<company>London</company>
<price>7.80</price>
<year>1987</year>
</cd>
<cd>
<title>Unchain my heart</title>
<artist>Joe Cocker</artist>
<country>USA</country>
<company>EMI</company>
<price>8.20</price>
<year>1987</year>
</cd>
</catalog>
Here's the Velocity to transform that XML data:
<h2>My CD Collection</h2>
#set ($today = $_DateTool.getDate())
<p><i>Last updated $_DateTool.format("EEEEE, MMMMM dd, yyyy",$today)</i></p>
<table style="border:3px solid #450084">
<tr style="background:#ccc999">
<th style="text-align:left">Title</th>
<th style="text-align:left">Artist</th>
<th style="text-align:left">Release Date</th>
<th style="text-align:left">Years since release</th>
</tr>
#set($cds = $_XPathTool.selectNodes($contentRoot, '//catalog/cd'))
#foreach($cd in $cds)
#set ($day="-01-01 08:00:00")
#set ($artist = $cd.getChild('artist').value)
#set ($title = $cd.getChild('title').value)
#set ($year = $cd.getChild('year').value)
#set($now = $_DateTool.format("yyyy",$today))
#set ($releasetime = $_MathTool.sub($now, $year))
<tr>
<td>$title</td>
<td>$artist</td>
<td>$year</td>
<td>$releasetime years</td>
</tr>
#end
##END LOOP
</table>
And below is the rendered output:
My CD Collection
Last updated Thursday, February 08, 2024
Title | Artist | Release Date | Years since release |
---|---|---|---|
Empire Burlesque | Bob Dylan | 1985 | 39 years |
Hide your heart | Bonnie Tyler | 1988 | 36 years |
Greatest Hits | Dolly Parton | 1982 | 42 years |
Still got the blues | Gary Moore | 1990 | 34 years |
Eros | Eros Ramazzotti | 1997 | 27 years |
One night only | Bee Gees | 1998 | 26 years |
Sylvias Mother | Dr.Hook | 1973 | 51 years |
Maggie May | Rod Stewart | 1990 | 34 years |
Romanza | Andrea Bocelli | 1996 | 28 years |
When a man loves a woman | Percy Sledge | 1987 | 37 years |
Black angel | Savage Rose | 1995 | 29 years |
1999 Grammy Nominees | Many | 1999 | 25 years |
For the good times | Kenny Rogers | 1995 | 29 years |
Big Willie style | Will Smith | 1997 | 27 years |
Tupelo Honey | Van Morrison | 1971 | 53 years |
Soulsville | Jorn Hoel | 1996 | 28 years |
The very best of | Cat Stevens | 1990 | 34 years |
Stop | Sam Brown | 1988 | 36 years |
Bridge of Spies | T`Pau | 1987 | 37 years |
Private Dancer | Tina Turner | 1983 | 41 years |
Midt om natten | Kim Larsen | 1983 | 41 years |
Pavarotti Gala Concert | Luciano Pavarotti | 1991 | 33 years |
The dock of the bay | Otis Redding | 1987 | 37 years |
Picture book | Simply Red | 1985 | 39 years |
Red | The Communards | 1987 | 37 years |
Unchain my heart | Joe Cocker | 1987 | 37 years |
That result you were wondering about:
If you do this code:
#set($string = '1982' )
#set( $date = $_DateTool.toDate("yyyy",$string))
$_DateTool.format('E, d MMM y k:mm:ss', $date)
And (drumroll, please) here is the result:
Fri, 1 Jan 1982 24:00:00