java.util.date时间与系统时间不同

java.util.date时间与系统时间不同,java,date,timezone,Java,Date,Timezone,我的系统时间是12:23 AM,但如果我尝试使用普通java代码显示时间 Date dt = new Date(); System.out.println("date is "+dt); 我得到了不同的时间:日期是2011年9月5日星期一01:23:18 BDST 帮帮我。现在正确吗 Date dt = new Date(); System.out.println(DateFormat.getDateTimeInstance().format(dt)); BDST(英国双夏时)是您的时区(G

我的系统时间是12:23 AM,但如果我尝试使用普通java代码显示时间

Date dt = new Date();
System.out.println("date is "+dt);
我得到了不同的时间:
日期是2011年9月5日星期一01:23:18 BDST
帮帮我。

现在正确吗

Date dt = new Date();
System.out.println(DateFormat.getDateTimeInstance().format(dt));
BDST
(英国双夏时)是您的时区(GMT+01:00)?

这可能有助于

import java.util.Calendar;
import java.text.SimpleDateFormat;

public class DateUtils {
    public static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";

    public static String now() {
        Calendar cal = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT_NOW);
        return sdf.format(cal.getTime());
    }

    public static void  main(String arg[]) {
        System.out.println("Now : " + DateUtils.now());
    }
}

这有点复杂,但您可以做以下操作(显然可以替换您的时区):


我还没试过,但我觉得这可能管用<代码>日期将始终初始化为UTC。

Jdk 6的日期有问题。当我安装jdk 7时,问题已经解决。

可能是时区问题?请看这里的夏令时问题我可能认为这可能是夏令时问题。我如何解决这个问题?@Diptopol Dam更新了答案。只需添加SimpleDataFormat不会更改日期的值。
Calendar cal = Calendar.getInstance( TimeZone.getTimeZone("America/Los_Angeles") );
Date dt = cal.getTime();

System.out.println( dt);