system.date.getDayOfMonth unexpected output

Time to play 'spot the difference':

startDate = system.date.parse('2024-01-01 00:00:00', 'yyyy-MM-dd HH:mm:ss')
endDate = system.date.parse('2025-01-01 00:00:00', 'yyyy-MM-dd HH:mm:ss')

print system.date.yearsBetween(startDate, endDate)
print system.date.getSecond(startDate) == system.date.getSecond(endDate)
print system.date.getMinute(startDate) == system.date.getMinute(endDate)
print system.date.getHour24(startDate) == system.date.getHour24(endDate)
print 'about to print dayOfMonth...'
print system.date.getDayOfMonth(startDate) 
print system.date.getDayOfMonth(endDate)
print 'just printed dayOfMonth'
print system.date.getMonth(startDate) == system.date.getMonth(endDate)
print system.date.yearsBetween(startDate, endDate) == 0

YYYY in system.date.parse gives you the 'ISO week year', not the expected calendar year - yyyy is what you actually want.

3 Likes