如何获得不同时区的当地时间?

Raj*_*Raj 20 java timezone

我想使用Java代码获取不同时区的本地时间.根据传递给函数的时区,我需要该时区的本地时间.怎么做到这一点?

kar*_*old 14

我建议您查看Joda Time,它是标准Java日期和时间API的替代方案(但非常受欢迎):

http://joda-time.sourceforge.net/index.html

使用Joda Time,我认为这就是你的意思:

import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;

public class TimeZoneDemo {

  public static void main(String[] args) {

    DateTime now = new DateTime(System.currentTimeMillis(), DateTimeZone.forID("UTC"));
    System.out.println("Current time is: " + now);
  }
}
Run Code Online (Sandbox Code Playgroud)

您只需要知道相关时区的标准ID,例如UTC.

  • 感谢您的回复.我正在写一个小班,我不想为这个小班导入joda包.你能用其他方式建议吗?再次感谢 (2认同)

小智 12

java.util.TimeZone tz = java.util.TimeZone.getTimeZone("GMT+1");
java.util.Calendar c = java.util.Calendar.getInstance(tz);

System.out.println(c.get(java.util.Calendar.HOUR_OF_DAY)+":"+c.get(java.util.Calendar.MINUTE)+":"+c.get(java.util.Calendar.SECOND));
Run Code Online (Sandbox Code Playgroud)


use*_*667 8

Java 1.8在包中提供了一些新类java.time:

package learning.java8;

import java.time.Instant;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;

import org.junit.Test;

public class JavaTimeLT {

    @Test
    public void zonedDataTimeExample() {
        final ZoneId zoneId = ZoneId.of("Europe/Zurich");
        final ZonedDateTime zonedDateTime = ZonedDateTime.ofInstant(Instant.now(), zoneId);
        System.out.println(zonedDateTime.format(DateTimeFormatter.ISO_ZONED_DATE_TIME));
    }
}
Run Code Online (Sandbox Code Playgroud)