基本的に、Javaサーブレットを使用して予定スケジューラWebアプリケーションを構築しました。これは、javasカレンダーに大きく依存しています。すべては、jdk1.6を使用してマウンテンライオンを実行している私のmacbookで開発されました。
今私のPCでそれをテストするとき、私はいくつかの奇妙な結果を持っています。
ランニング:
System.out.println("selected = "+selected);
Calendar now = Calendar.getInstance();
System.out.println("a "+now.getTime());
now.setTimeInMillis(selected);
System.out.println("b "+now.getTime());
now.set(Calendar.MILLISECOND,0);
now.set(Calendar.SECOND,0);
now.set(Calendar.MINUTE,0);
now.set(Calendar.HOUR_OF_DAY,6);//start from 6am
System.out.println("d "+now.getTime());
now.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
System.out.println("e "+now.getTime());
PC上で出力されます:
selected = 1355835600000
a Wed Dec 19 19:35:36 EST 2012
b Wed Dec 19 00:00:00 EST 2012
d Wed Dec 19 06:00:00 EST 2012
e Sun Dec 23 06:00:00 EST 2012
しかし、Macでは次のように出力されます。
selected = 1355835600000
a Wed Dec 19 19:33:57 EST 2012
b Wed Dec 19 00:00:00 EST 2012
d Wed Dec 19 06:00:00 EST 2012
e Sun Dec 16 06:00:00 EST 2012
ここでわかるように、これらの値から毎週のスケジュールを表すテーブルを作成すると、Macは現在の週に含まれる日曜日の午前6時に開始されます。ただし、PCは翌週の日曜日の午前6時に開始されます。
これは、私が作成した予定がPC上で同期していないことを意味します(予想とは異なる日)注:PCはjdk1.6とjdk1.7の両方でテストされています
誰かがこれの背後にある解決策や理由を知っていますか?
ありがとう