At the core of the using Dates in Velocity is the included DateTool, which is automatically mapped to $date
in dotCMS. This tool has a number of formatting methods and parsing method.
There is also another Viewtool — DateViewWebAPI, mapped to $dateviewapi
— that exposes one valuable method, which is called $dateviewapi.friendly(Date)
This method returns friendly interval message based upon the difference between now and the date you pass in as a parameter.
Read more about date formatting and parsing with the DateTool.
Examples
Parse Date from String
#set($tempDate = $date.toDate("EEE, dd MMM yyyy HH:mm:ss +SSSS","Wed, 02 Apr 2008 16:23:14 +0000"))
$date.format('medium',$tempDate) = Wed Apr 02 16:23:14 EDT 2008
Parse Date from String with timezone and offset
#set($tempDate = $date.toDate( "yyyy-MM-dd'T'HH:mm:ss'Z'","2016-05-06T20:42:26Z"))
$tempDate = Fri May 06 20:34:26 EDT 2016
Friendly “since” interval message
#set($tempDate = $date.toDate("EEE, dd MMM yyyy HH:mm:ss +SSSS","Fri, 02 May 2008 14:20:00 +0000"))
$dateviewapi.friendly($tempDate) = 3 hour(s) ago
Formating Dates, assuming it is October 2015
Date Format: Month
$date.format('MMMM', $content.date)) = October
Date Format: Year
$date.format('yyyy', $content.date)) = 2015
Is the content from the current month?
#set($dateMonth = $date.format('MM', $content.publishDate))
#if($math.toInteger($dateMonth) == $math.toInteger($date.get("MM")))
#set($currentMonth = true)
#else
#set($currentMonth = false)
#end
$currentMonth = false
Pull a folder by year and month, assuming it is October 2015
#set($dateYear = $date.get('yyyy'))
#set($dateMonth = $date.get('MM'))
#set($folder="/photo/galleries/$dateYear/$dateMonth")
$folder=/photo/galleries/2015/10