The DataFormatter class creates a new ExcelStyleDateFormatter for custom date formatting which is a subclass of SimpleDateFormat. However, it never calls setTimeZone which means it relies on the user.timezone and cannot be overridden. For the default date format, setTimeZone is called with the time zone from LocaleUtil, which allows for the zone to be overridden on a per-thread basis. I have a use case for reading formatted dates from an Excel file using as UTC, but this only works if the JVM user.timezone is set to UTC, which I cannot guarantee.
would have time to look at doing a patch?