0

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

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
String sendingDateAndTime = dateFormat.format(cal.getTime()).trim();

但是当我想要系统时间(而不是当地时间,因为我的软件将在多个国家/地区执行,因此我可以使用 TimeZone 对象)时,我得到了 GMT 时间。

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

很多人都有同样的问题,但我看到的所有解决方案都是在时区对象中放置像“欧洲”这样的硬代码或其他东西。

如果有人可以帮助你。

谢谢

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

我尝试使用 System.currentTimeMillis() 并将其作为参数提供给日历对象,但我也得到了 GMT 时间

4

1 回答 1

0

这个 GMT 时间怎么样?

Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"));

这适用于本地计算机时间吗?

Calendar calendar = Calendar.getInstance();

DateFormat 将默认为本地时区。Calendar 对象的内部格式是格林威治标准时间 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);
}
于 2013-08-28T12:55:37.180 回答