如果我在不同的国家,我怎么知道特定国家的时间?

时间:2014-06-07 03:42:50

标签: java android datetime timezone

我试图这样做 1.获取我的时间当前时间和时区。 2.我知道Google特定国家/地区的时区。 3.计算时区差异。 4.从当前时间中减去这个差异。这会给我在其他国家的时间。 我陷入了第3步和第4步。 我得到这样的当前时间

Date d = new Date();
CharSequence s = DateFormat.format("hh:mm:ss", d.getTime());

和像这样的时区

Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"),
            Locale.getDefault());
    Date currentLocalTime = calendar.getTime();
    SimpleDateFormat date = new SimpleDateFormat("Z");
    String localTime = date.format(currentLocalTime);

让特定国家/地区的时区由字符串x表示。现在我如何获得localTime - x然后是currentTime - (localTime - x)。

2 个答案:

答案 0 :(得分:1)

x是时区ID,有一个列表的链接。只需要将gettimeZone("时区ID")与你想知道时间的城市时区一起提供(我说的是城市因为有很多时间的国家/地区)美国或俄罗斯等地区。)

TimeZone tz = TimeZone.getTimeZone(" x")

http://garygregory.wordpress.com/2013/06/18/what-are-the-java-timezone-ids/

答案 1 :(得分:1)

您可以使用Joda-Time库,

Joda-Time User Guide

http://www.joda.org/joda-time/

How can i know time in a specific country if i am in a differenet country?

http://www.joda.org/joda-time/apidocs/index.html

您可以根据Joda Time中定义的Canonical ID获取DateTimeZone,

DateTimeZone zone = DateTimeZone.forID("Asia/Kolkata");

Joda Time有一个完整的Canonical ID列表,您可以根据Canonical ID获取TimeZone。

所以,如果你想在这个时刻到纽约当地时间,你会做以下事情

 // get current moment in default time zone
    DateTime dt = new DateTime();
    // translate to New York local time
    DateTime dtNewYork = dt.withZone(DateTimeZone.forID("America/New_York"));

这里非常完美地解释了我对你的问题的引用

Get time of different Time zones on selection of time from time picker

您也可以在不使用api的情况下使用此链接

http://tutorials.jenkov.com/java-date-time/java-util-timezone.html

其他参考资料

How to get time with respect to another timezone in android

Date and time conversion to some other Timezone in java

How to convert date time from one time zone to another time zone