【问题标题】:java.util.date time is different than the system timejava.util.date 时间与系统时间不同
【发布时间】:2011-09-04 18:28:42
【问题描述】:

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

Date dt = new Date();
System.out.println("date is "+dt);

我得到了不同的时间:date is Mon Sep 05 01:23:18 BDST 2011 帮帮我。

【问题讨论】:

标签: java date timezone


【解决方案1】:

现在正确吗?

Date dt = new Date();
System.out.println(DateFormat.getDateTimeInstance().format(dt));

BDST(英国夏令时)是您的时区(格林威治标准时间 +01:00)吗?

【讨论】:

    【解决方案2】:

    这有点令人费解,但您可以执行以下操作(显然替换您的时区):

    Calendar cal = Calendar.getInstance( TimeZone.getTimeZone("America/Los_Angeles") );
    Date dt = cal.getTime();
    
    System.out.println( dt);
    

    我没有尝试过,但我觉得这可能会奏效! Date 将始终初始化为 UTC。

    【讨论】:

      【解决方案3】:

      Jdk 6 的日期有问题。当我安装 jdk 7 问题就解决了。

      【讨论】:

        【解决方案4】:

        这可能会有所帮助...

        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());
            }
        }
        

        【讨论】:

        • @Diptopol Dam 更新了答案。
        • 只添加 SimpleDateFormat 不会改变日期的值。
        猜你喜欢
        • 2011-02-26
        • 1970-01-01
        • 2016-01-12
        • 1970-01-01
        • 2015-10-26
        • 1970-01-01
        • 2015-01-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多