Folks, I have designed a Jasper Report which is designed to be hosted on a web server and executed via a Web App via the clients browser. The client may or may not reside in the same timezone as the web server (which will always be running as UTC) so obviously I want to ensure that any dates displayed to the user are in their local timezone. So, I intend to pass the client timezone to the report via the REPORT_TIME_ZONE parameter - after some testing I have noticed that Jasper Reports only adjusts certain dates to the appropriate timezone. Consider the attached JRXML test file which prints out the current date in serveral different ways: 1. Text Field, Expression Class: java.lang.String: new Date() 2. Text Field, Expression Class: java.util.Date: new Date() 3. Text Field, Variable, Expression Class: java.lang.String: new Date() 4. Text Field, Variable, Expression Class: java.util.Date: new Date() 5. Text Field, Localised Property String with formatted parameter, Expression Class: java.lang.String: msg("{0,date,EEE, d MMM yyyy HH:mm:ss Z}", new Date()) 6. Text Field, Localised Property String with formatted parameter, Expression Class; java.util.Date: msg("{0,date,EEE, d MMM yyyy HH:mm:ss Z}", new Date()) 7. Text Field, Expression Class: java.lang.String: "" + new Date() 8. Text Field, Expression Class: java.lang.Util: "" + new Date() For completeness I've included each test date twice - with an Expression Class of java.lang.String and java.util.Date respectively - although I'm not sure it makes any difference. Let's assume that my local environment is currently in British Summer Time (BST or GMT+01) and I've configured iReport so that the report Time Zone is set to US/Pacific (Pacific Standard Time). These are the results I obtain: Sun, 10 Jun 2012 12:42:15 -0700 Sun, 10 Jun 2012 12:42:15 -0700 Sun, 10 Jun 2012 12:42:15 -0700 Sun, 10 Jun 2012 12:42:15 -0700 Sun, 10 Jun 2012 20:42:15 +0100 Sun, 10 Jun 2012 20:42:15 +0100 Sun Jun 10 20:42:15 BST 2012 Sun Jun 10 20:42:15 BST 2012 You'll notice that the first four results conform to the REPORT_TIME_ZONE whilst the latter four default to the timezone of my local environment - so if a Date is passed as an object parameter to msg() or a String is concatenated with a Date() object, the REPORT_TIME_ZONE seems to be bypassed/ignored. Is this expected behaviour? Obviously I could get around this problem by ensuring that anywhere I wish to print a simple Date value that I create a dedicated Text Field and only define new Date() in the expression and then manually add the remaining text required via another appropriately aligned Text Field - but should I have to - am I messing something?