如何在java中创建相对于UTC/GMT以外的其他时间的时区

如何在java中创建相对于UTC/GMT以外的其他时间的时区,java,datetime,timezone,timezone-offset,Java,Datetime,Timezone,Timezone Offset,我需要创建一个时区,它是美国/纽约的固定偏移量 我想这样做(DateTime库): DateTimeZone MyTimeZone=DateTimeZone.forID(“美国/纽约+17”) 但这是不可能的 我唯一能做的就是将当前偏移量设置为UTC/GMT,并按我的附加偏移量进行偏移 DateTimeZone.forOffsetMillis(NYTimeZone.getOffset(time)+dt) 但这不是很有效,因为我需要知道当前时间才能知道当前偏移量 谢谢 我找到了ZoneTimeB

我需要创建一个时区,它是美国/纽约的固定偏移量

我想这样做(DateTime库): DateTimeZone MyTimeZone=DateTimeZone.forID(“美国/纽约+17”)

但这是不可能的

我唯一能做的就是将当前偏移量设置为UTC/GMT,并按我的附加偏移量进行偏移

DateTimeZone.forOffsetMillis(NYTimeZone.getOffset(time)+dt)

但这不是很有效,因为我需要知道当前时间才能知道当前偏移量

谢谢


我找到了ZoneTimeBuilder—下面是一个关于如何使用它的示例

你知道纽约的定义在哪里吗?这个例子是洛杉矶的

DateTimeZone America\u Los\u Angeles=新DateTimeZoneBuilder() .addCutover(-2147483648,'w',1,1,0,false,0) .SETS标准偏差(-28378000) .setFixedSavings(“LMT”,0) .addCutover(1883,“w”,11,18,0,false,43200000) .SETS标准偏差(-28800000) .addRecurringSavings(“PDT”,3600000,19181919,“w',3,-1,7,false,7200000) .addRecurringSavings(“PST”,019181919,“w',10,-1,7,假,7200000) .addRecurringSavings(“PWT”,3600000,1942,1942,'w',2,9,0,false,7200000) .addRecurringSavings(“PPT”,3600000,1945,1945,'u',8,14,0,false,82800000) .addRecurringSavings(“PST”,0,1945,1945,'w',9,30,0,false,7200000) .addRecurringSavings(“PDT”,3600000,1948,1948,“w',3,14,0,false,7200000) .addRecurringSavings(“PST”,0,1949,1949,'w',1,1,0,false,7200000) .addRecurringSavings(“PDT”,3600000,1950,1966,“w',4,-1,7,假,7200000) .addRecurringSavings(“PST”,0,1950,1961,“w',9,-1,7,假,7200000) .addRecurringSavings(“PST”,0,1962,1966,“w',10,-1,7,假,7200000) .addRecurringSavings(“PST”,0,1967,2147483647,“w',10,-1,7,false,7200000) .addRecurringSavings(“PDT”,3600000,1967,1973,“w',4,-1,7,假,7200000) .addRecurringSavings(“PDT”,3600000,1974,1974,“w',1,6,0,false,7200000) .addRecurringSavings(“PDT”,3600000,1975,1975,'w',2,23,0,false,7200000) .addRecurringSavings(“PDT”,3600000,1976,1986,“w',4,-1,7,假,7200000) .addRecurringSavings(“PDT”,3600000,1987,2147483647,“w',4,1,7,true,7200000)
.toDateTimeZone(“美国/洛杉矶”,真实)

什么版本的Java?你问题的答案在很大程度上取决于这一点……但它到底有多低效?特别是如果您存储答案,纽约的偏移量也会发生变化(在UTC-5和UTC-4之间),因此最终结果将是一个时区在UTC+12和UTC+13之间变化,同时美国东部时区也会发生变化。你确定这就是你想要的吗?请注意,这些转换将发生在这个新时区的当地时间下午5:00。这会很奇怪。这确实是一个非常奇怪的要求。你能告诉我们你的目标是什么吗?很可能有更好的办法。请注意,除固定偏移时区外,您始终需要“了解当前时间以了解当前偏移”。。。你所描述的区域不是。1/对fge:使用Java8-2/对MattJohson:是的,纽约的下午5点将是这个新时区的午夜。