Java 从两个字符串中确定Joda DateTimeZone

Java 从两个字符串中确定Joda DateTimeZone,java,datetime,timezone,jodatime,Java,Datetime,Timezone,Jodatime,我的问题是: 在unix时间中,我有一个时间字符串。Unix时间始终为UTC。 我有一个第二时间作为字符串,没有任何时区信息,但它应该等于unixTime字符串,因此应该可以使用第1点的信息确定日期时区。 我有一个没有任何时区信息的额外时间字符串,但我知道,它与第2点具有相同的时区。 如何获取第3点的时区 例如: //Point 1 String justTimeStringInUnixTime = "1280750400"; //Point 2 String justTimeStringAs

我的问题是:

在unix时间中,我有一个时间字符串。Unix时间始终为UTC。 我有一个第二时间作为字符串,没有任何时区信息,但它应该等于unixTime字符串,因此应该可以使用第1点的信息确定日期时区。 我有一个没有任何时区信息的额外时间字符串,但我知道,它与第2点具有相同的时区。 如何获取第3点的时区

例如:

//Point 1
String justTimeStringInUnixTime = "1280750400";

//Point 2
String justTimeStringAsDateString = "2010-08-02 14:00:00";

//Point 3
String extraString = "2015-03-24 09:33:03";

DateTimeZone timezone= getTimeZone(justTimeStringInUnixTime ,justTimeStringAsDateString);

//parse the extraString as DateTime
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss").withZone(timezone);
DateTime dateTime= formatter.parseDateTime(extraString);

//some work with dateTime object ...

我现在不知道。也许有人能给我指出所需的想法/代码片段。

可能有点粗糙,但这应该可以:

long ref = Integer.parseInt(justTimeStringInUnixTime) * 1000l;
SimpleDateFormat form = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date j = form.parse(justTimeStringAsDateString);
long offset = j.getTime() - ref;
TimeZone tz = new SimpleTimeZone((int) offset, "UTC" + (offset == 0 ? "" : String.format("%+d", ((int) offset/3600000))));

DateTimeZone timezone= DateTimeZone.forTimeZone(tz);

你想如何在稀薄的空气中找到这个区域?如果数据提供者没有告诉你如何在没有tz信息的情况下解释日期时间,那么你就迷失了方向。很抱歉