Ok, I do not like this solution but it is the only one I came up with so far, the only one that works:
So we have preinitialized ZonedDateTime merchantLocalReceiptDateTime
(remember, this is threetenbp). We can do this then (is it daylight saving for given time?):
boolean isDaylightSaving = merchantLocalReceiptDateTime.getZone()
.getRules().isDaylightSavings(merchantLocalReceiptDateTime.toInstant());
Then, to get short representation of timezone that respects daylight saving, we can do this (TimeZone is not part of threeten, it is java.util):
TimeZone.getTimeZone(merchantLocalReceiptDateTime.getZone().getId())
.getDisplayName(isDaylightSaving, TimeZone.SHORT)
For New York (assuming device language is English/United States), the above produces EST in winter and EDT right now. For timezones without particular daylight saving names, it can give, for example, "GMT+2", "GMT+3" etc. If language is different, you will likely get those "GMT+-".