将转换时间转换为毫秒

时间:2014-01-10 10:43:48

标签: java android time icalendar

我正在尝试解析iCal文件并将信息写入我的Android应用程序的数据库。

我正在使用 ical4j-library 来解析数据,作为输出,我得到了一个格式如下的日期: 20140116T121500Z

我想将该日期转换为毫秒。我尝试使用Joda,但无法让它工作:

引起:java.lang.IllegalArgumentException:格式无效:“20140110T091500Z”格式错误为“1500Z”

1 个答案:

答案 0 :(得分:4)

Joda-Time使用DateTimeFormat API:

DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyyMMdd'T'HHmmssZ");
System.out.println(formatter.parseDateTime("20140116T121500Z").getMillis());

<强>输出:

  

1389874500000

我可以通过java.text.SimpleDateFormat解析代表时区的'Z'来解析你的日期(或者完全省略Z):

SimpleDateFormat dateFormat =  new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'");
System.out.println(dateFormat.parse("20140116T121500Z").getTime());

<强>输出:

  

1389854700000

注意:通过在java.text.SimpleDateFormat中稀释时区来引入2次差异,这可以通过在下面设置显式GMT时区来克服:

SimpleDateFormat dateFormat =  new SimpleDateFormat("yyyyMMdd'T'HHmmss'Z'");
dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(dateFormat.parse("20140116T121500Z").getTime());

<强>输出:

  

1389874500000