Date Type Android

/*
I was working on an Atom (http://www.w3.org/2005/Atom) parser and discovered that I 
could not parse dates in the format defined by RFC 3339 using the  SimpleDateFormat 
class. The  reason was the ':' in the time  zone. This code strips out the colon if 
it's there and tries four different formats on the resulting string depending on if
it has a  time zone, or if it has a  fractional second part.  There is a probably a 
better way  to do this, and a more proper way.  But this is a really small addition 
to a  codebase  (You don't  need a jar, just throw  this  function in  some  static 
Utility class if you have one).
Feel free to use this in your code, but I'd appreciate it if you keep this note  in 
the code if you distribute it.  Thanks!
For  people  who might  be  googling: The date  format  parsed  by  this  goes  by: 
atomDateConstruct,  xsd:dateTime,  RFC3339  and  is compatable with: ISO.8601.1988, 
W3C.NOTE-datetime-19980827  and  W3C.REC-xmlschema-2-20041028   (that  I  know  of)
Copyright 2007, Chad Okere (ceothrow1 at gmail dotcom)
OMG NO WARRENTY EXPRESSED OR IMPLIED!!!1
 */
//package org.doubango.imsdroid.utils;
import java.text.SimpleDateFormat;
import java.util.Date;
public class RFC3339Date {
  public static java.util.Date parseRFC3339Date(String datestring)
      throws java.text.ParseException, IndexOutOfBoundsException {
    Date d = new Date();
    // if there is no time zone, we don't need to do any special parsing.
    if (datestring.endsWith("Z")) {
      try {
        SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); // spec for RFC3339
        d = s.parse(datestring);
      } catch (java.text.ParseException pe) {// try again with optional decimals
        SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSS'Z'");// spec for RFC3339 (with fractional seconds)
        s.setLenient(true);
        d = s.parse(datestring);
      }
      return d;
    }
    // step one, split off the timezone.
    String firstpart = datestring.substring(0, datestring.lastIndexOf('-'));
    String secondpart = datestring.substring(datestring.lastIndexOf('-'));
    // step two, remove the colon from the timezone offset
    secondpart = secondpart.substring(0, secondpart.indexOf(':'))
        + secondpart.substring(secondpart.indexOf(':') + 1);
    datestring = firstpart + secondpart;
    SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");// spec for RFC3339
    
    try {
      d = s.parse(datestring);
    } catch (java.text.ParseException pe) {// try again with optional decimals
      s = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSZ");// spec for RFC3339 (with fractional seconds)
      s.setLenient(true);
      d = s.parse(datestring);
    }
    return d;
  }
}