2013-05-22 7 views
7

私は答えを見つけることができない簡単な質問です。 私はタイムスタンプの文字列を持っています。それをカレンダーオブジェクトにしてAndroidアプリケーションに表示することができます。Javaのカレンダーへのタイムスタンプの文字列ですか?

これまでのコードでは、すべてがすべて1970年代に表示されています。

String timestamp = parameter.fieldParameterStringValue; 
timestampLong = Long.parseLong(timestamp); 
Date d = new Date(timestampLong); 
Calendar c = Calendar.getInstance(); 
c.setTime(d); 
int year = c.get(Calendar.YEAR); 
int month = c.get(Calendar.MONTH); 
int date = c.get(Calendar.DATE); 

dateTextView.setText(year + "-" + month + 1 + "-" + date); 

UPDATE: ちょうどFYI、タイムスタンプは、サーバからのものであり:1369148661、 それは間違っているだろうか?

+0

を?いくつかのAPI私はスペースを節約するために1000年代のストライプを知っています。すなわち1秒の精度 –

+0

私たちが走っているサーバーから。タイムスタンプは正しいです、私は値を三重チェックしました、そしてそれはサーバーから正しいです。 –

+0

'c.setTimeInMillis(timestampLong);'を実行して、同じ結果が得られたかどうか確認できますか? –

答えて

15

あなたが時間を秒単位で取得する場合、あなたは1000年を掛けする必要があります。

String time = "1369148661"; 
long timestampLong = Long.parseLong(time)*1000; 
Date d = new Date(timestampLong); 
Calendar c = Calendar.getInstance(); 
c.setTime(d); 
int year = c.get(Calendar.YEAR); 
int month = c.get(Calendar.MONTH); 
int date = c.get(Calendar.DATE); 
System.out.println(year +"-"+month+"-"+date); 

出力:

2013から4を-21

ケアCalendar.MONTHのための定数は、ですから、ユーザーのために、このようにそれを表示する必要があります0から始めているので:あなたからのタイムスタンプを取得している

System.out.println(year +"-"+(month+1)+"-"+date); 
+0

私は日付変換をスキップしてしまいましたが、それ以外の場合は使用したのと同じコードです。特に初めに私を投げた(月+1)。 –

+0

すばらしい答え。あなたは私の一日と素晴らしい解決策を救う –

18

あなたはsetTimeMillisを使用することができます。

Calendar calendar = Calendar.getInstance(); 
calendar.setTimeInMillis(timestampLong); 
関連する問題