regards,
    Fred.
or
You can prepare string before sets it in MessageFormat.
You can use Calendar class
for example:
            ( ... )
            TimeZone tz = TimeZone.getTimeZone("GMT");  // for Greenwich
Time Zone
            Calendar mCal = Calendar.getInstance( tz );
            Date mDate = new Date(100, 06, 14, 10, 30, 0);
            mCal.setTime(mDate);   // deprecated!
            // or
            mCal.set( 100, 06, 14, 10, 30, 0);
            String sDate = mCal.get(Calendar.HOUR) + ":" +
                                   mCal.get(Calendar.MINUTE) + ":" +
                                   mCal.get(Calendar.SECOND);
           MessageFormat form = new MessageFormat( sDate );
           ( ... )
regards,
            GP
"Fred Gurkov" <fr...@sunbay.com> wrote in message
news:39473271...@sunbay.com...
Grzegorz Pszona wrote:
> 
> You should use DateFormat class.
> 
> or
> You can prepare string before sets it in MessageFormat.
> You can use Calendar class
> 
> for example:
> 
>             ( ... )
>             TimeZone tz = TimeZone.getTimeZone("GMT");  // for Greenwich
> Time Zone
>             Calendar mCal = Calendar.getInstance( tz );
If you want this calendar to run on GMT time you must (instead of your local default).
             mCal.setTimezone( tz );
> 
>             Date mDate = new Date(100, 06, 14, 10, 30, 0);
>             mCal.setTime(mDate);   // deprecated!
Calendar.setTime is not deprecated, just new Date(...) with many arguments.
>             // or
>             mCal.set( 100, 06, 14, 10, 30, 0);
> 
>             String sDate = mCal.get(Calendar.HOUR) + ":" +
>                                    mCal.get(Calendar.MINUTE) + ":" +
>                                    mCal.get(Calendar.SECOND);
> 
>            MessageFormat form = new MessageFormat( sDate );
>            ( ... )
A SimpleDateFormat might come in handy here, but the original poster was
looking to use a MessageFormat.
To set the format for a date field I believe you need to do the following.
1. Construct a SimpleDateFormat with the TZ set correctly, you might use information
from the default format (DateFormat.getDateInstance())and set the TZ on that.
2. Use the MessageFormat.setFormat( index, format ) method to attach your specially
created format into a particular _field_ in the particular Message.
I don't see a way make all dates in a message change to a given TZ.
Hope that helps,
-Paul
If I had time I'd code this
> 
> regards,
>             GP
> 
> "Fred Gurkov" <fr...@sunbay.com> wrote in message
> news:39473271...@sunbay.com...
> > Does anybody know how to set the time zone for a MessageFormat or even
> > better for a specific date field in it?
> >
> > regards,
> >     Fred.
> >
-- 
Myriad Genetics: http://www.myriad.com/
Java FAQ: http://www.afu.com/javafaq.html (Section 9, Computer Dating)
import java.text.*;
import java.util.*;
public class Format {
  public static void main(String argv[]) {
    MessageFormat mf = new MessageFormat("The time is: {0, time, HH:mm}");
    TimeZone tz = TimeZone.getTimeZone("GMT");
    Object [] formats = mf.getFormats();
    for (int i = 0; i < formats.length; i++) {
        if (formats[i] instanceof SimpleDateFormat) {
            ((SimpleDateFormat)formats[i]).setTimeZone(tz);
        }
    }
    Date date = new Date();
    Object [] args = {date};
    System.out.println(mf.format(args));
  }
}
Best regards,
    Fred.
Fred Gurkov wrote:
> 
> Thanks a lot Paul, you have inspired me to write quite acceptable code. I haven't paid
> attention to the getFormats method of a MessageFormat. Here's an example:
>     for (int i = 0; i < formats.length; i++) {
>         if (formats[i] instanceof SimpleDateFormat) {
>             ((SimpleDateFormat)formats[i]).setTimeZone(tz);
>         }
>     }
Bravo!  Obviously you can just go looking for the right objects in the
list of formats and tweak them.  What someone might do is make a
TimeZoneMessageFormat() that contains a setTimeZone( TimeZone tz )
which I just did. I've run it and it seems to work.
import java.util.*;
import java.text.*;
public class TZMessageFormat extends MessageFormat {
    public TZMessageFormat( String newPattern ) {
        super( newPattern );
    }
    
    private TimeZone _tz; // for all dates/times in this message
    public void setTimeZone( TimeZone tz ) {
        _tz = tz;
        applyTimeZone();
    }
    
    private void applyTimeZone() {
        if ( _tz == null ) return;
        // force the specific timezone on any date/times in the message
        Object [] formats = getFormats();
        for (int i = 0; i < formats.length; i++) {
            if (formats[i] instanceof SimpleDateFormat) {
                ((SimpleDateFormat)formats[i]).setTimeZone(_tz);
            }
        }        
    }
    public void applyPattern( String newPattern ) {
        super.applyPattern( newPattern );
        applyTimeZone();
    }
    
    public static void main(String[] args) {
        TZMessageFormat mf = new TZMessageFormat( "The time is: {0, time, HH:mm}");
        mf.setTimeZone( TimeZone.getTimeZone("GMT") );
        Date date = new Date();
        Object [] args1 = {date};
        System.out.println(mf.format(args1));
        // or as one line as
        System.out.println( mf.format( new Object[] { new Date() } ) );