如何解析一个时区到一个长存储到sqlite?

时间:2016-05-05 18:21:23

标签: java android sqlite

所以我使用nodejs发回一个json对象,返回时我得到以下日期值"2016-05-02T04:00:00.000Z"我需要做的是将它存储在我的Android应用程序中的sqlite数据库中 - (时区无关紧要,我唯一关心的事情就是年,月,日。

现在我将获得一个包含这种日期格式的50个对象的列表 - 所以它必须在某种程度上有效。

我已经读过时区不可解析但是人们说在新的Java中它是,所以请让我知道如何正确解析它。

SimpleDateFormat假设有效吗?

3 个答案:

答案 0 :(得分:1)

你可以像这样使用Calendar类:

Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month);
c.set(Calendar.DAY_OF_MONTH, day);

但在此之前,您必须手动解析String。用字母“T”分割,然后得到数组[0]并用“ - ”拆分,然后用Integer.parseInt(..)得到日,月和年的整数。对于时间戳,您可以使用c,getTimeInMillis();

答案 1 :(得分:0)

只需简单地以毫秒为单位使用时间。

在Android中获取当前时间,您可以使用System.currentTimeMillis,从中您可以轻松地制作年,月和日。

答案 2 :(得分:0)

是的, SimpleDateFormat 可以使用。

您需要做的是将您的String时间戳解析为Date对象,从1970年1月1日格林威治标准时间午夜起,您可以从中检索毫秒差异。

 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
 sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
 Date d = sdf.parse(timestamp);

然后调用getTime()方法获取时间戳与1970年1月1日格林威治标准时间午夜之间的差异。

d.getTime();

doc:http://developer.android.com/reference/java/text/SimpleDateFormat.htmlhttp://developer.android.com/reference/java/util/Date.html#getTime()