从两个字符串中确定Joda DateTimeZone

时间:2015-04-09 12:20:31

标签: java datetime timezone jodatime

我的问题:

  1. 我在unix时间里有一个字符串的时间。 Unix时间总是UTC。
  2. 我第二次作为字符串没有任何时区信息,但它应该等于unixTime字符串,因此应该可以使用第1点的信息确定日期时区。
  3. 我有一个额外的时间字符串没有任何时区信息,但我知道,它与第2点的时区相同。
  4. 如何获得第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 ...
    

    目前我不知道。也许有人可以指出我需要的想法/代码片段。

1 个答案:

答案 0 :(得分:0)

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

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);