1

「created_time」フィールドを UNIX タイムスタンプとして返​​す FQL を使用して、Facebook API からニュースフィードを取得しています。私はそれを、次のコードを使用して ISO-8601 タイムスタンプであると信じているものに変換しています。

String getInitialCreatedTime = JOFeeds.getString("created_time");
long finalTimeStamp = Long.valueOf(getInitialCreatedTime);
SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ssZ");
String finalCreatedTime = dateFormatter.format(new Date(finalTimeStamp * 1000L));

ここで、文字列からfinalCreatedTime時刻だけを 12 時間 (AM/PM) 形式で抽出したいと思います。

その趣旨で、私はこのコードを使用しています:

final String old_format = "yyyy-MM-dd'T'HH:mm:ssZ";
final String new_format = "EEE MMM d hh:mm aa yyyy";

String oldDateSring = finalCreatedTime;

SimpleDateFormat sdf = new SimpleDateFormat(old_format);
Date d = sdf.parse(oldDateSring);
sdf.applyPattern(new_format);

Calendar cal = Calendar.getInstance();
cal.setTime(d);

と:

// GET THE TIME
SimpleDateFormat sdfTimeFormatter = new SimpleDateFormat("hh:mm aa");
String getTime = sdfTimeFormatter.format(cal.getTime());
feeds.setTime(getTime);
Log.e("TIME", getTime);

最初のコード ブロックの結果は次のとおりです。2012-12-14T04:30:03+0530

そして、// GET THE TIMEブロックからの結果は04:30AM、あるべきとき04:30PMです。

これに関する指針をいただければ幸いです。おそらく、私はそれを間違って実装していますか?

編集: 12.00 PM から 1.00 PM の間に入るタイムスタンプは適切に処理され、PM が適切に表示されることを追加する場合があります。

4

1 に答える 1

1

あなたが持っている :

String getInitialCreatedTime = JOFeeds.getString("created_time");
long finalTimeStamp = Long.valueOf(getInitialCreatedTime);
// Note 8601 is written with 'HH'
SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");

ここまでは順調ですね。ただし、これから日付を作成する必要があります。

Date date = new Date(finalTimeStamp * 1000L)

次に、必要なものをフォーマットする必要があります(フォーマットしたばかりの日付を決して解析しないでください。まったく意味がありません)。

String finalCreatedTime = dateFormatter.format(date); // Not sure if you need this one

SimpleDateFormat sdfTimeFormatter = new SimpleDateFormat("hh:mm aa");
String getTime = sdfTimeFormatter.format(date);
feeds.setTime(getTime);
于 2012-12-14T15:03:04.643 に答える