Java 如何从特定时区获取时间?

Java 如何从特定时区获取时间?,java,datetime,jodatime,Java,Datetime,Jodatime,我有一个时区,我有: 时区tz=时区getTimeZone(“GMT-05:00”); Calendar c=Calendar.getInstance(tz) 如何从该时区获取具有正确时间的DateTime对象? 如果我做了c.getTime()我得到的是当前时间,而不是该时区的时间。 做 我获得了预期的时间,但无法从此字符串创建有效的DateTime对象。 如何解决此问题?获取和打印时区的其他可能性包括: import java.text.DateFormat; import java.tex

我有一个时区,我有:

时区tz=时区getTimeZone(“GMT-05:00”); Calendar c=Calendar.getInstance(tz)

如何从该时区获取具有正确时间的
DateTime
对象?
如果我做了
c.getTime()
我得到的是当前时间,而不是该时区的时间。

我获得了预期的时间,但无法从此字符串创建有效的
DateTime
对象。

如何解决此问题?

获取和打印时区的其他可能性包括:

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;


public class TestDate {

    public static void main(String[] args){
        Date date = new Date();
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
        String dateString = df.format(date);

        System.out.println(dateString);
    }
}

这将有助于查看此链接

TimeZone tz = TimeZone.getTimeZone("GMT+05:30");
Calendar c = Calendar.getInstance(tz);
String time = String.format("%02d" , c.get(Calendar.HOUR_OF_DAY))+":"+
            String.format("%02d" , c.get(Calendar.MINUTE))+":"+
.                   String.format("%02d" , c.get(Calendar.SECOND))+":"+
    .           String.format("%03d" , c.get(Calendar.MILLISECOND));

您需要使用
DateTime.WithZone
方法

TimeZone timeZone = TimeZone.getTimeZone("GMT-05:00");
    DateTimeZone dateTimeZone = DateTimeZone.forTimeZone(timeZone);
    System.out.println(timeZone);
    System.out.println(dateTimeZone);
    DateTime dt = new DateTime();
    DateTime dtLondon = dt.withZone(dateTimeZone);
    System.out.println(dtLondon);

你使用哪个版本的Java?8或更少?你提到jodatime是一个标记;你真的使用它吗?你的代码只依赖于旧的API如果你想一个
DateTime
有一个时区,你需要使用
DateTimeZone
将该
DateTime
与该时区一起设置。你为什么要将
Java.util.Calendar
与Jod混用a-Time?@fge:是的,如果JodaTime有解决方案的话,我可以使用它。@realpoint:我正在使用我在搜索中找到的代码。有更好的/另一种方法吗?我没有关于
forId
部分的信息好的,我明白了,塔克请看更新后的答案…@Jim
TimeZone timeZone = TimeZone.getTimeZone("GMT-05:00");
    DateTimeZone dateTimeZone = DateTimeZone.forTimeZone(timeZone);
    System.out.println(timeZone);
    System.out.println(dateTimeZone);
    DateTime dt = new DateTime();
    DateTime dtLondon = dt.withZone(dateTimeZone);
    System.out.println(dtLondon);