0

「Sun Jun 23」と「22:45」の 2 つの文字列があります。この 2 つの文字列と実際の年によって示される日付の長い (ミリ秒?) 表現を取得したいと考えています。

私はこのようなことを試みています:

String s1 = "Sun Jun 23";
String s2 = "22:45";
long date = new SimpleDateFormat("EEE MMM dd").parse(s1).getTime() 
          + new SimpleDateFormat("HH:mm").parse(s2).getTime();

長い日付形式を文字列に戻すと

private SimpleDateFormat sdf;
sdf = new SimpleDateFormat("yyyy.MM.dd_HH:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
console.getOut().println(sdf.format(date));

「1970.06.23_20:45:00」になりました

これは 2 つの問題を示しています。

  • これには現在の年は含まれません。どうすれば追加できますか?
  • なぜ私は 2 時間 (22:45 から 20:45 まで) を「失った」のですか?
4

2 に答える 2

2

文字列を連結してから、日付を解析して時刻を取得してみてください

String completeTime = s1 + " " + s2;
SimpleDateFormat sdf = new SimpleDateFormat ("EEE MMM dd HH:mm")
Date date = sdf.parse(completeTime)
long millis = date.getTime()

編集.. 申し訳ありませんが、質問全体を完全に読みました...

年は日付によってどこにも読み取られないため、追加するか、どこかから読み取る必要があります。年である場合は、Calendar オブジェクトを使用して取得することをお勧めします

ミリ秒長からの解析のタイムゾーン情報が時差を引き起こしている"GMT+2"ようです。これを修正するために使用できますが、これは常に正しいとは限りません。タイムゾーンの設定を削除すると、結果が変わりますか?

于 2013-06-23T21:17:46.657 に答える