このコードを Windows マシンで実行すると、正しく動作します。
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf.format(new Date()));
時計と同じ日付と時刻が表示されますが、Windows Server で実行すると同じコードが表示され、-2 時間の時刻が表示されます。
タイムゾーンを次のように設定してみましたが、
TimeZone timeZone = TimeZone.getTimeZone("Europe/Vienna");
sdf.setTimeZone(timeZone);
Then, it shows same as clock time.
私の疑問は、Windows Server でデフォルトで時計のタイム ゾーンを使用しない理由です。