Ответ 1
Когда вы создаете DateTime
с JodaTime, вам не нужно передавать смещение. Вместо этого пропустите часовой пояс. Он позаботится о том, чтобы определить правильное смещение, включая рассмотрение DST.
// First get a DateTimeZone using the zone name
DateTimeZone zone = DateTimeZone.forID("America/Los_Angeles");
// Then get the current time in that zone.
DateTime dt = new DateTime(zone);
// Or if you prefer to be more explicit, this syntax is equivalent.
DateTime dt = DateTime.now(zone);
UPDATE
Я все еще не уверен, что вы спрашиваете, но, возможно, вы ищете один из них:
// To get the current Pacific Time offset
DateTimeZone zone = DateTimeZone.forID("America/Los_Angeles");
int currentOffsetMilliseconds = zone.getOffset(Instant.now());
int currentOffsetHours = currentOffsetMilliseconds / (60 * 60 * 1000);
// To just determine if it is currently DST in Pacific Time or not.
DateTimeZone zone = DateTimeZone.forID("America/Los_Angeles");
boolean isStandardOffset = zone.isStandardOffset(Instant.now());
boolean isDaylightOfset = !isStandardOffset;