Date Operations
Today's Date
Here are a few helpful ways to get today's date in velocity and return the value as a string:
Today's date is:
$date.format('yyyyMMdd',$date) = 20241114
$date = Nov 14, 2024, 12:18:06 PM
$date.long = November 14, 2024, 12:18:06 PM EST
$date.medium_time = 12:18:06 PM
$date.full_date = Thursday, November 14, 2024
$date.get('default','short') = Nov 14, 2024, 12:18 PM
$date.get('yyyy-M-d H:m:s') = 2024-11-14 12:18:6
Adding/Subtracting Dates
This code gets a java.util.Calendar and uses it to calculate 24 hours from now:
My date: $date
## Get a java Calendar
#set($x = $date.calendar)
## Add 24 hours (hours=int code 10 - see list below)
$x.add(10,24)
## Show result
My new date :$x.time
Adding and Setting dates
You can also set dates and time with the calendar object. For example, to get a date at midnight one year ago:
My date: $date
## Get a java Calendar
#set($x = $date.calendar)
## Subtract 1 year (year=int code 1 - see list below)
$x.add(1,-1)
## Set the hours, minutes and seconds to 0
$x.set(10,0) ## hours
$x.set(12,0) ## minutes
$x.set(13,0) ## seconds
## Show result in SQL format -
$date.format('yyyy-MM-dd HH:mm:ss',$x.time)
Constants
Here are a list of the constants available in the java calendar that you can use to add or subtract or set (we used 10 in the example above). All constants are declared as public static final int
.
java.util.Calendar | |
---|---|
ALL_STYLES |
0 |
AM |
0 |
AM_PM |
9 |
APRIL |
3 |
AUGUST |
7 |
DATE |
5 |
DAY_OF_MONTH |
5 |
DAY_OF_WEEK |
7 |
DAY_OF_WEEK_IN_MONTH |
8 |
DAY_OF_YEAR |
6 |
DECEMBER |
11 |
DST_OFFSET |
16 |
ERA |
0 |
FEBRUARY |
1 |
FIELD_COUNT |
17 |
FRIDAY |
6 |
HOUR |
10 |
HOUR_OF_DAY |
11 |
JANUARY |
0 |
JULY |
6 |
JUNE |
5 |
LONG |
2 |
MARCH |
2 |
MAY |
4 |
MILLISECOND |
14 |
MINUTE |
12 |
MONDAY |
2 |
MONTH |
2 |
NOVEMBER |
10 |
OCTOBER |
9 |
PM |
1 |
SATURDAY |
7 |
SECOND |
13 |
SEPTEMBER |
8 |
SHORT |
1 |
SUNDAY |
1 |
THURSDAY |
5 |
TUESDAY |
3 |
UNDECIMBER |
12 |
WEDNESDAY |
4 |
WEEK_OF_MONTH |
4 |
WEEK_OF_YEAR |
3 |
YEAR |
1 |
ZONE_OFFSET |
15 |
Comparison
To compare date strings they first must be converted to a Calendar and then use the compareTo method:
## Converting string date to Calendar
#set($nowDate=$date.toCalendar($date))
## We compare to today's date
#if($calDate.compareTo($date)==0)
Publish Date is today
#elseif($calDate.compareTo($date)>0)
Publish Date is in the future
#else
Publish Date is in the past
#end
The examples above are put together here:
## Add Days to a Date: Sets a start Date 7 days before today.
(You can use a positive or negative number of days days.)
#set($startDate = $date.format('yyyyMMdd', $UtilMethods.addDays($date.date, -7)))
<p>This is the start date string: $startDate</p>
## This returns a string with the numbers in today's date
## Example: "20120823" (Aug 23, 2012)
#set($today = $date.format('yyyyMMdd',$date))
<p>This is today's date string: $today</p>
## Converting string date to Calendar
#set($calDate=$date.toCalendar($con.publishedDate))
#set($nowDate=$date.toCalendar($date))
## We compare to today's date
#if($calDate.compareTo($nowDate)==0)
Publish Date is today
#elseif($calDate.compareTo($nowDate)>0)
Publish Date is in the future
#else
Publish Date is in the past
#end