Saya mencoba menjalankan program Java, tetapi mengambil zona waktu GMT default, bukan zona waktu yang ditentukan OS. Versi JDK saya adalah 1.5 dan OSnya adalah Windows Server Enterprise (2007)
Windows memiliki zona waktu Central yang ditentukan, tetapi ketika saya menjalankan program berikut, itu memberi saya waktu GMT.
import java.util.Calendar;
public class DateTest
{
public static void main(String[] args)
{
Calendar now = Calendar.getInstance();
System.out.println(now.getTimeZone());
System.out.println(now.getTime());
}
}
Ini outputnya
sun.util.calendar.ZoneInfo[id="GMT",
offset=0,
dstSavings=0,
useDaylight=false,
transitions=0,
lastRule=null]
Mon Mar 22 13:46:45 GMT 2010
Harap dicatat bahwa saya tidak ingin mengatur zona waktu dari aplikasi. Saya ingin zona waktu yang digunakan oleh JVM harus menjadi yang ditentukan dalam OS. (Saya tidak menemukan masalah ini dengan server lain yang memiliki versi 1.4 dari JDK dan Microsoft Server 2003).
Pikiran apa pun akan sangat dihargai.
DateTest
kelas?-Duser.timezone
nilaiJawaban:
Anda dapat melewati JVM param ini
Sebagai contoh
dan ini harus melakukan trik. Pengaturan variabel lingkungan TZ juga melakukan trik di Linux.
sumber
Anda juga dapat mengatur zona waktu default dalam kode Anda dengan menggunakan kode berikut.
Untuk Anda
sumber
Jawaban yang diterima di atas:
Sebenarnya tidak bekerja untuk saya. Saya hanya berhasil mengubah zona waktu ketika saya tidak memiliki tanda kutip di parameter:
sumber
Pada windows 7 dan untuk JDK6, saya harus menambahkan
-Duser.timezone="Europe/Sofia"
ke JAVA_TOOL_OPTIONS variabel sistem yang terletak di bawah "Komputer saya => Properties => Advanced System Settings => Variabel Lingkungan".Jika Anda sudah memiliki properti lain yang disetel untuk
JAVA_TOOL_OPTIONS
hanya menambahkan spasi dan kemudian masukkan string properti Anda.sumber
Dua opsi yang menurut saya tidak tercakup dalam jawaban lain:
Hindari kebutuhan
Apa pun yang Anda lakukan untuk mengatur zona waktu default JVM, sangat sulit untuk memastikan bahwa tidak ada orang lain yang menetapkannya secara berbeda. Itu dapat diatur kapan saja tanpa pemberitahuan dari bagian lain dari program Anda atau dari program lain yang berjalan di JVM yang sama. Jadi dalam operasi waktu Anda secara eksplisit tentang zona waktu yang Anda inginkan, dan Anda akan selalu tahu apa yang Anda dapatkan secara independen dari pengaturan JVM. Contoh:
Contoh output:
System.setProperty
Untuk banyak tujuan berikut ini tidak akan menjadi cara yang disukai, dan tentu saja dapat disalahgunakan. Untuk program “buang” saya terkadang merasa praktis. Anda juga dapat mengatur properti sistem dari dalam Java:
Ini baru saja dicetak:
Jika Anda ingin validasi string yang Anda berikan, gunakan:
sumber
Jika Anda menggunakan Maven :
sumber
mvn spring-boot:run -Drun.jvmArguments="-Duser.timezone=UTC"
untuk Spring Boot v1.Di win7, jika Anda ingin mengatur zona waktu yang benar sebagai parameter di JRE, Anda harus mengedit file yang
deployment.properties
disimpan di jalurc:\users\%username%\appdata\locallow\sun\java\deployment
menambahkan stringdeployment.javaws.jre.1.args=-Duser.timezone\=
my_time_zonesumber