2016-05-05 5 views
1

私はnodejsを使用してjsonオブジェクトを返送していますが、返り値として次の日付の値を取得します"2016-05-02T04:00:00.000Z"これをsqliteデータベースに長期保存する必要があります(タイムゾーンは問題ではありませんが、私が気にしているのは年、月、日だけです)。タイムゾーンを長時間解析してsqliteに格納する方法は?

ここでは、この日付形式の50個のオブジェクトのリストを取得する予定です。効率的である必要があります。

私は、タイムゾーンは解析不可能だと読んだが、新しいJavaではそれが正しいとパースできることを人々が述べている。

SimpleDateFormatは動作すると思われますか?

+0

のJava 8は、あなたがタイムゾーンで作業を支援し、そのようになる 'クラス、*' java.timeを持っていますが、Androidは、[この]によると、これらのクラスを持っていません。 (http://developer.android.com/preview/j8-jack.html)にはいくつかの言語機能があります。 –

答えて

1

あなたは、このようCalendarクラスを使用することができます。文字「T」で分割し、配列[0]を取得し、「 - 」で分割した後、Integer.parseInt(..)で日、月、および年のintを取得します。使用できるタイムスタンプはc,getTimeInMillis();

+0

ありがとうございました! – Lion789

0

ミリ秒単位で時間を使用するだけです。

現在の時刻を取得するためのAndroidでは、System.currentTimeMillisを使用することができ、それで年、月、日を簡単に作成できます。

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

をしかしその前に、あなたは手動であなたのStringを解析する必要があります。

+0

これを参照してミリ秒形式に変換するhttp://stackoverflow.com/questions/7953725/how-to-convert-milliseconds-to-date-format-in-android – Ashish

+0

サーバーには日付が格納されているので、その日付をつかんで、それを長くする - 私は新しい日付を作成していない。 – Lion789

+0

彼はすでにそれを説明したGauthierの答えを使用してください。 – Ashish

0

はい、SimpleDateFormatが動作します。

あなたが行う必要があるのは、Stringタイムスタンプを1970年1月1日午前GMTからミリ秒の差分を取得できるDateオブジェクトに解析することです。

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

、その後、あなたのタイムスタンプと1970年1月1日、真夜中GMT間diffentialを取得するために、getTime()メソッドを呼び出します。

d.getTime(); 

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

+0

うまくいかない、それは私に例外を与えた – Lion789

+0

例外を表示することはできますか? – Gauthier

関連する問題