[relaxng-user] Re: dateTime

Pete Forman pete.forman at westerngeco.com
Thu Nov 4 13:21:18 ICT 2004


"Pawson, David" <David.Pawson at rnib.org.uk> writes:

 > http://www.w3.org/TR/xmlschema-2/#dateTime provides 
 > examples such as
 > 
 > 2003-05-31T13:20:05.50-05:00 
 > [...]
 > Can anyone help with the timezone formatting, to meet
 > the +-xx:nn format please?

Here is some code I use in standard Java.

You might also check out http://joda-time.sourceforge.net/ 

import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;

public class Now {
  public static void main(String[] args) {
    System.out.println(Now.getISO8601DateTime());
  }

  public static String getISO8601DateTime() {
    SimpleDateFormat ISO8601Local = new SimpleDateFormat(
      "yyyy-MM-dd'T'HH:mm:ss");
    TimeZone timeZone = TimeZone.getDefault();
    ISO8601Local.setTimeZone(timeZone);
    DecimalFormat twoDigits = new DecimalFormat("00");

    Date now = new Date();
    int offset = ISO8601Local.getTimeZone().getOffset(now.getTime());
    String sign = "+";
    if (offset < 0) {
      offset = -offset;
      sign = "-";
    }
    int hours = offset / 3600000;
    int minutes = (offset - hours * 3600000) / 60000;
    // As things stand any odd seconds in the offset are silently truncated.
    // Uncomment the next 5 lines to detect that rare circumstance.
    //if (offset != hours * 3600000 + minutes * 60000) {
    //  // E.g. TZ=Asia/Riyadh87
    //  throw new RuntimeException("TimeZone offset (" + sign + offset +
    //                             " ms) is not an exact number of minutes");
    //}
    String ISO8601Now = ISO8601Local.format(now) + sign +
      twoDigits.format(hours) + ":" + twoDigits.format(minutes);
    return ISO8601Now;
  }
}


-- 
Pete Forman                -./\.-  Disclaimer: This post is originated
WesternGeco                  -./\.-   by myself and does not represent
pete.forman at westerngeco.com    -./\.-   opinion of Schlumberger, Baker
http://petef.port5.com           -./\.-   Hughes or their divisions.



More information about the relaxng-user mailing list