Hi,
I am trying to write a user macro that checks the last modification of files. But when I try to compare the dates - nothing seems to work. So I wrote a small User macro to try and isolate the problem. (I thought I was following the advice located in the Community at: https://community.atlassian.com/t5/Answers-Developer-Questions/How-to-parse-a-string-into-a-date-in-a-User-Macro/qaq-p/500908
and https://community.atlassian.com/t5/Confluence-questions/I-would-like-to-compare-dates/qaq-p/61312)
This is the code of the small macro (that just compares and prints out different formats of the creation and last modification times of the current page):
## This is an example macro
## @noparams
#set($mylist = "<br>")
#set( $createD = $content.getCreationDate())
#set( $modD = $content.getLastModificationDate())
#set( $createOb = $content.currentDate)
#set( $modOb = $content.currentDate)
#set ($mylist = $mylist + "file creation date (before parse): " + $createD + "<br>")
#set ($mylist = $mylist + "file modification date (before parse): " + $modD + "<br>")
#*
#set( $res = $createOb.setTime($content.currentDate.parse($createD)))
#set( $res = $modOb.setTime($content.currentDate.parse($modD)))
*#
$createOb.setTime($content.currentDate.parse($createD))
$modOb.setTime($content.currentDate.parse($modD))
#if ( $createOb.before($modOb))
#set( $mylist = $mylist + "creation object time was before the modify object time <br>")
#elseif ( $createOb.after($modOb))
#set( $mylist = $mylist + "creation object time was after the modify object time <br>")
#else
#set( $mylist = $mylist + "creation object time was neither before or after the modify object time <br>")
#end
#set( $createDI = $createOb.getTime())
#set( $modDI = $modOb.getTime())
#set ($mylist = $mylist + "the unix time for creation is: " + $createDI + "<br>")
#set ($mylist = $mylist + "the unix time for last modification is: " + $modDI + "<br>")
${mylist}
And this is the output of the macro on the page that I inserted it into:
$createOb.setTime($content.currentDate.parse($createD)) $modOb.setTime($content.currentDate.parse($modD))
file creation date (before parse): 2018-05-29 14:08:51.904
file modification date (before parse): 2018-06-05 08:51:58.687
creation object time was neither before or after the modify object time
the unix time for creation is: 1528179636921
the unix time for last modification is: 1528179636921
A few questions -
How do I not display the first line of output?
Why are the parsed dates the same (current time)?
Thanx
Found the solution to be easier than I thought - since the ContentEntity dates (CreationDate and ModificationDate) actually return a Date object. Used their after() method to perform the comparison
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.