Why don't you just set the default timezone for your web service in the skeleton init() method?

Assuming all dates come through in UTC time in the XML messages, they will be converted correctly without having to do any mucking around.

Alex Dickinson wrote:
Actually... that date format doesn't work either. Java timezones are not
compatible with ISO8601 formats.

The is what I ended up doing (and it is uggggly):

private final static String[] ISO_8601_DATE_FORMATS =
      new String[]
          {
              "yyyy-MM-dd'T'HH:mm:ss.SSSZ",
              "yyyy-MM-dd'T'HH:mm:ss.SSS",
              "yyyy-MM-dd'T'HH:mm:ssZ",
              "yyyy-MM-dd'T'HH:mm:ss",
              "yyyy-MM-dd",
          };


String str = "2007-05-10T15:22:07.000Z"; // the time to translate
TimeZone tz = null; // fill this in with the time zone that
                    //non-timezone  encoded times will use.

Date result = null;

// convert timezones from ISO 8601 notation
str = str.replaceAll("Z$", "+0000");
str = str.replaceAll("([\\+\\-]\\d\\d):(\\d\\d)$", "$1$2");

for (String format : ISO_8601_DATE_FORMATS)
{
  try
  {
    SimpleDateFormat dateFormat = new SimpleDateFormat(format);

    // add in the timezone if the format specifies it.
    if (! format.endsWith("Z"))
    {
      dateFormat.setTimeZone(tz);
    }
    result = dateFormat.parse(str);

    break;
  }
  catch (ParseException ex)
  {
    // do nothing
  }
}

if (result == null)
{
  throw new ParseException();
}


Cheers,
-aLEX




Walker, Jeff wrote:
  
I think we all agreed many posts ago that it is best (if not elementary)
to transfer dates via plain strings, defined in schema. It definitely
doesn't cause you any integration issues since you take the date and
simply build the appropriate object from it. (Surprisingly ugly, for
Java).

// Take a string and create a Calendar object from it
Date requiredDate = null;
String existingString = "2007-05-10T15:22:07.000Z"; // Get this from web
service
SimpleDateFormat sdf = new
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
try {
	requiredDate = sdf.parse(formattedStr);
}
catch (java.text.ParseException pe) {
	System.out.println("We got a parsing exception: " +
pe.getMessage()); 
}
Calendar newCal = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
newCal.setTime(requiredDate);

You might need to pass the timezone as a separate string field, I think.
Here I used "GMT" but you will pass it as a separate parameter in a web
service call.


Also, looking at Axis 1.3 src it builds a SimpleDateFornmat object from
the GMT timezone. There is no way to change that unless you edit the
org.apache.axis.encoding.ser.CalendarSerializer class and then recompile
Axis. Yuk.
-jeff

 





-----Original Message-----
From: Ford, Jennifer M. [mailto:[EMAIL PROTECTED]] 
Sent: Monday, November 05, 2007 4:05 PM
To: [email protected]
Subject: RE: axis Calendar time zones

Unfortunately, I don't think that's possible.  You'll just have to
translate to/from GMT on each end.

-----Original Message-----
From: Simon Steinacker [mailto:[EMAIL PROTECTED]] 
Sent: Monday, November 05, 2007 2:57 PM
To: [email protected]; [EMAIL PROTECTED]
Subject: axis Calendar time zones

Hello,

I am currently using axis 1.3, working with java Calendar objects across
Web Services.
I realized, that axis by default sets the timezone to GMT when
serializing dates.

How can I tell axis which timezone it should use?
Thanks a lot,
Simon

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



    



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



  


-- 

Anthony
------------------------------------- 
Anthony Bull
Senior Developer
Black Coffee Software Ltd
PO Box 10-192 The Terrace
Wellington, New Zealand
 
[EMAIL PROTECTED]
Ph  +64 4 472 8818
Fax +64 4 472 8811
------------------------------------- 
www.bcsoft.co.nz
--------------------------------------------------------------- 
This email may contain confidential or privileged information, 
and is intended for use only by the addressee, or addressees. 
If you are not the intended recipient please advise the sender 
immediately and do not copy, use or disclose the contents to 
any other person or organisation.
Black Coffee Software Ltd accepts no responsibility for viruses 
received with this email, or to any changes made to the original 
content. Any views or opinions expressed in this email may be
personal to the sender and are not necessarily those of Black 
Coffee Software Ltd.
--------------------------------------------------------------- 
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to