On 09/28/2011 05:20 PM, Legeinfo wrote:
I want to split a dato string like 2011.08.02 into
year, month and days to
calculate the age of a person.
$year = 2011
$month = 08
$day = 02
$year =($date.replaceAll($'\d\d\d\d.','$1'))
is not working.
I'm not sure what you tried to write there, but it doesn't look right.
There are many ways to do this. When you said "split", the most
straight-forward way to do this seems to be:
#set ($date = "2011.08.02")
#set ($datePieces = $date.split('\.'))
$datePieces[0] $datePieces[1] $datePieces[2]
If you really want a solution based on replaceAll, then this seems to work:
#set ($date = "2011.08.02")
#set ($year = $date.replaceAll('(\d{4})\..*', '$1'))
#set ($month = $date.replaceAll('\d{4}\.(\d{1,2})\..*', '$1'))
#set ($day = $date.replaceAll('.*\.(\d{2})$', '$1'))
$year $month $day
The most flexible way would be to use the jodatime plugin to parse this
string into a real DateTime object, from which you can request the
various date parts explicitly.
#set ($date = "2011.08.02")
#set ($dateObj =
$xwiki.jodatime.getDateTimeFormatterForPattern('yyyy.MM.dd').parseDateTime($date))
$dateObj.year $dateObj.monthOfYear $dateObj.dayOfMonth
--
Sergiu Dumitriu
http://purl.org/net/sergiu/