On 10/23/2010 10:45 PM, Eugen Colesnicov wrote:
I checked this example and your script - it is not correct, because you
compare separately year, month and day of document with current date - year,
month and day-100. But if, for example now is 02 january, your script give
uncorrect result, becase I also should change year and month (and year),
then I want to get date BEFORE 100 days of 02 january.
Need to make arithmetical operations with dates and these operations should
consider also possible transitions of month and year when day changed ...
In any case - thanks!
I found the answer - need to use special velocity object $datetool
You can use the jodatime plugin, which makes it easier to work with dates.
See
https://svn.xwiki.org/svnroot/xwiki/platform/xwiki-plugins/trunk/jodatime/
Accessed with $xwiki.jodatime
Also, you shouldn't use computed date segments as constants inside a
query, but do a parameterized query and compare dates.
Schematic example:
$xwiki.searchDocuments(", DateProperty someDateProp where
someDateProp.value > ?", [$computedStartDate])
Example:
#set ($d = 5) - days interval which I need
#set ($ms = $d * 24 * 60 * 60 * 1000) - Calculating internal in
Milliseconds
#set ($calendar = $datetool.getCalendar())
#set ($currentTime = $calendar.getTimeInMillis())
#set ($targetTime = $currentTime - $ms)
#set ($void = $calendar.setTimeInMillis($targetTime))
#set ($targetDate = $calendar.getTime())
#set ($targetYear = $datetool.getYear($targetDate)) :get year of
a date = currentdate - 5 days
#set ($targetMonth = $datetool.getMonth($targetDate) + 1) :get month of a
date = currentdate - 5 days
#set ($targetDay = $datetool.getDay($targetDate)) :get day of
a date = currentdate - 5 days
and after this, in a hql searching, I can compare this year, month, and day
with documents year, month and day ...
--
Sergiu Dumitriu
http://purl.org/net/sergiu/