KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > thoughtworks > xstream > converters > basic > DateConverter


1 package com.thoughtworks.xstream.converters.basic;
2
3 import com.thoughtworks.xstream.converters.ConversionException;
4
5 import java.text.ParseException JavaDoc;
6 import java.util.Date JavaDoc;
7
8 /**
9  * Converts a java.util.Date to a String as a date format,
10  * retaining precision down to milliseconds.
11  *
12  * @author Joe Walnes
13  */

14 public class DateConverter extends AbstractBasicConverter {
15
16     private ThreadSafeSimpleDateFormat[] formats = {
17         new ThreadSafeSimpleDateFormat("yyyy-MM-dd HH:mm:ss.S a", 4, 20),
18         new ThreadSafeSimpleDateFormat("yyyy-MM-dd HH:mm:ssa", 2, 20)
19     };
20
21     public boolean canConvert(Class JavaDoc type) {
22         return type.equals(Date JavaDoc.class);
23     }
24
25     protected Object JavaDoc fromString(String JavaDoc str) {
26         for (int i = 0; i < formats.length; i++) {
27             try {
28                 return formats[i].parse(str);
29             } catch (ParseException JavaDoc e) {
30                 // no worries, let's try the next format.
31
}
32         }
33         // no formats left to try
34
throw new ConversionException("Cannot parse date " + str);
35     }
36
37     protected String JavaDoc toString(Object JavaDoc obj) {
38         Date JavaDoc date = (Date JavaDoc) obj;
39         return formats[0].format(date);
40     }
41
42 }
43
Popular Tags