我需要将字符串时间戳值转换为Java Date对象。该字符串采用'2011-03-16T09:00:00-05:00'格式。是否有时区表示我可以使用SimpleDateFormat将此数据作为Date对象加载? 'z','Z'和'zzzz'是我所知道的唯一时区表示,其中没有一个可以代表我的时区数据(-05:00)。有人解决了这个问题吗?
感谢。
答案 0 :(得分:1)
JodaTime可能有所帮助。考虑使用它和自定义格式化程序(称为“怪异的格式化程序”)。
http://joda-time.sourceforge.net/userguide.html#Input_and_Output
答案 1 :(得分:0)
不幸的是,时区中的冒号使问题复杂化了。您可能需要查看this question。
答案 2 :(得分:0)
看到提供的这个时间戳格式看起来像XML中使用的标准格式,您可以尝试以下方法:
public static void main(String[] args) throws DatatypeConfigurationException {
String inDate = "2011-03-16T09:00:00-05:00";
javax.xml.datatype.DatatypeFactory factory = DatatypeFactory.newInstance();
javax.xml.datatype.XMLGregorianCalendar xmlGregCal = factory.newXMLGregorianCalendar(inDate);
java.util.GregorianCalendar gregCal = xmlGregCal.toGregorianCalendar();
java.util.Date dateObj = gregCal.getTime();
System.out.println("cal = " + xmlGregCal.toString());
System.out.println("cal.year = " + xmlGregCal.getYear());
System.out.println("cal.month = " + xmlGregCal.getMonth());
System.out.println("cal.day = " + xmlGregCal.getDay());
System.out.println("cal.hour = " + xmlGregCal.getHour());
System.out.println("cal.minute = " + xmlGregCal.getMinute());
System.out.println("cal.second = " + xmlGregCal.getSecond());
System.out.println("cal.timezone = " + xmlGregCal.getTimezone());
System.out.println("cal.eonAndYear = " + xmlGregCal.getEonAndYear());
}
创建的输出如下:
cal = 2011-03-16T09:00:00-05:00
cal.year = 2011 cal.month = 3
cal.day = 16
cal.hour = 9
cal.minute = 0
cal.second = 0
cal.timezone = -300
cal.eonAndYear = 2011