Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date JAVA:获取错误的当前时间_Date_Calendar - Fatal编程技术网

Date JAVA:获取错误的当前时间

Date JAVA:获取错误的当前时间,date,calendar,Date,Calendar,我尝试这样获取当前时间: DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); Calendar cal = Calendar.getInstance(); String sendingDateAndTime = dateFormat.format(cal.getTime()).trim(); 但是当我想要系统时间时,我得到了GMT时间(而不是本地时间,因为我的软件将在几个国家执行,所以我可以使用时区对象) 我

我尝试这样获取当前时间:

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
String sendingDateAndTime = dateFormat.format(cal.getTime()).trim();
但是当我想要系统时间时,我得到了GMT时间(而不是本地时间,因为我的软件将在几个国家执行,所以我可以使用时区对象)

我需要使用日期库和GregorianCalendar库,但我得到了相同的错误结果

很多人都有同样的问题,但我看到的所有解决方案都是在timezone对象中添加硬代码,如“Europe”或其他内容

如果有人能帮你

谢谢

----------------------------更新------------------------------------


我试图使用System.currentTimeMillis()并将其作为calendar对象的参数,但我也得到了GMT时间

Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
这是本地计算机时间吗

Calendar calendar = Calendar.getInstance();
DateFormat将默认为本地时区。日历对象的内部格式是1970年1月1日格林尼治标准时间午夜后的毫秒数

编辑以添加:当我运行此代码时,我会得到我的本地时间

public static void main (String[] args) {
    Calendar calendar = Calendar.getInstance();

    DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss z");
    String sendingDateAndTime = dateFormat.format(calendar.getTime());
    System.out.println(sendingDateAndTime);
}
当我运行这段代码时,我得到了GMT,尽管时区仍然是我的本地时区

public static void main (String[] args) {
    Calendar calendar = Calendar.getInstance();
    TimeZone timeZone = calendar.getTimeZone();
    int offsetFromUTC = timeZone.getOffset(calendar.getTimeInMillis());
    calendar.add(Calendar.MILLISECOND, -offsetFromUTC);

    DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss z");
    String sendingDateAndTime = dateFormat.format(calendar.getTime());
    System.out.println(sendingDateAndTime);
}

Gilbert:Calendar.getInstance()返回GMT时间,而不是系统时间。getTimeZone(“GMT”)也有相同的结果。现在当地时间是15:59,我得到12:59(格林尼治时间)非常奇怪!有人告诉我这个问题是因为Windows7,你有什么巫婆操作系统?您是否检查您的本地时间是否不是GMT时间?我使用的是Windows XP、Java 1.6,我的本地时间是GMT-4(美国东部夏时制)。我在eclipse上运行了我的代码,这是我得到的好时间。显然,这是因为Tomcat(4.1)的旧版本可能与