RFCに記載されているように、これは1900-01-01T00:00:00からの秒数です。Javaの場合は、これをLongに変換し、基準日を1970-01-01T00:00:00に変更し、1000を掛けて日付を取得します。次に、この値を使用して新しい日付を作成できます。
ソケット入力ストリームをDataInputStreamにラップし、rfsOffsetに読み込みます(定数を使用しました)。次に、次のようなことを行うことができます。
int rfcOffset = -752253627; // Fri Apr 06 11:00:32 EDT 2012
// Current offsets will be negative convert to long positive value
long offsetSecs = rfcOffset + 4294967296L;
System.out.println(offsetSecs);
// Adjust time base from 1900 to 1970 and convert to millis
long offsetMillis = ( offsetSecs - 2208988800L)* 1000L;
System.out.println(offsetMillis);
Date rfcDate = new Date(offsetMillis);
System.out.println(rfcDate.toString());
注:これは2036年までしか機能せず、時間は数ミリ秒ずれます。
編集:RFC 868は古いプロトコルであり、同期に適したタイムソースとは見なされなくなりました。適切なタイムソースはNTPを使用し、正しい秒を返します。数ミリ秒ずれている場合がありますが、通常は10ミリ秒以内で正確です。多くのハードウェアクロックは大幅にドリフトし、クロックが不正確なシステムからの大幅なドリフトを確認しました(NTPが実行されている場合でも)。NTPはドリフトクロックを修正しますが、必要なシフトを決定するのに数分かかります。
EDIT2:RFC 868は古いものですが、バックグラウンドプロセスを必要とせずに、携帯電話の時刻を最も近い秒に設定するだけで十分な場合があります。携帯電話がプロバイダーから送信された信号と同期できる場合、これは必要ありません。