John,
If you have a look at the java Gregorian calendar class
(http://docs.oracle.com/javase/7/docs/api/java/util/GregorianCalendar.html#GregorianCalendar(java.util.TimeZone,%20java.util.Locale)
It has a constructor for setting the timezone and locale. I imagine you
could insert this quite easily into the code on your interface, grabbing
the time from the DB and using your interface to convert it to the
desired locale, I imagine you can probably inject the same as a user
defined function into derby itself.
David
On 17/10/12 16:00, John English wrote:
I have a web application which includes a method which displays tables
(or more often views) which can be sorted and filtered in various ways
by the user. In the case of dates, I provide two columns (typically
called "usr_time" and "time") where "time" is the underlying
timestatmp and "usr_time" is formatted by an external function
(TimeFormat) to a format like "17-Oct-2012 at 15:25".
For example, I have a view defined like this:
CREATE VIEW user_history_log AS
SELECT TimeFormat(time) AS usr_time,
facility,
event,
details,
time,
username
FROM system_log;
The user can filter the output so that only dates containing a
substring like "Oct" will be displayed (using the usr_time column) or
sorted (in which case the "usr_" prefix is noted and stripped off to
give the name of the underlying column so that the date column will be
sorted chronologically rather than alphabetically). The underlying
query used to display the table might be something like
SELECT usr_time,facility,event,details
FROM user_history_log
WHERE username='FOO' AND usr_time LIKE '%oct%'
ORDER BY time DESC;
A problem has arisen in connection with internationalisation. The user
can now select a preferred language, which is fine except for the
dates displayed in the tables. The external TimeFormat function that
does the formatting is of course declared static, so it has no idea
who the user is or what the preferred language is. So I either have to
use English for displaying dates regardless of the chosen language, or
not use TimeFormat so that the user can't filter the output as before,
or find some way of passing a locale code to TimeFormat by some
devious trick.
Only the last of these three seems acceptable, but I haven't been able
to come up with the devious trick I need. Can anyone help?
TIA,