Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么Date.getTimezoneOffset被弃用?_Java_Date_Timezone_Utc - Fatal编程技术网

Java 为什么Date.getTimezoneOffset被弃用?

Java 为什么Date.getTimezoneOffset被弃用?,java,date,timezone,utc,Java,Date,Timezone,Utc,文件说明: 不赞成。从JDK版本1.1起,替换为 -(Calendar.get(Calendar.ZONE_OFFSET)+Calendar.get(Calendar.DST_OFFSET))/(60*1000) 为什么它被弃用?是否有较短的方法(Apache Commons?)以小时/分钟为单位获得UTC的偏移量?我有一个约会对象。。。我应该把它换成JodaDate吗 在你问我为什么需要UTC偏移量之前,只需要记录它,没什么了。一旦Java实现者意识到可能需要对不同类型的日历进行不同的实现,所

文件说明:

不赞成。从JDK版本1.1起,替换为 -(Calendar.get(Calendar.ZONE_OFFSET)+Calendar.get(Calendar.DST_OFFSET))/(60*1000)

为什么它被弃用?是否有较短的方法(Apache Commons?)以小时/分钟为单位获得UTC的偏移量?我有一个约会对象。。。我应该把它换成JodaDate吗


在你问我为什么需要UTC偏移量之前,只需要记录它,没什么了。

一旦Java实现者意识到可能需要对不同类型的日历进行不同的实现,所有的日期操作逻辑都被移出了
date
(因此现在需要使用
GregoriaCalendar
来检索此信息。
Date
现在只是UTC时间值的包装。

这里有两个问题

  • 为什么Date.getTimezoneOffset被弃用
  • 我认为这是因为他们实际上不赞成使用几乎所有的日期方法,并将其逻辑移到了日历上。我们希望使用泛型
    set
    get
    参数来表示我们需要哪个特定字段。这种方法有一些优点:方法数量较少,并且能够在通过我个人经常使用这种技术:它使代码更短,更易于维护

  • 捷径?但打电话有什么问题
  • Calendar.get(Calendar.DST_OFFSET)
    与比较
    Calendar.getTimeZoneOffset()

    据我所知,差别是6个字符


    Joda是一个非常强大的库,如果您真的需要编写大量复杂的日期操作代码,请切换到它。我个人使用标准的
    java.util.Calendar
    ,并且不认为有任何理由使用外部库:好的旧日历对我来说已经足够了。

    在粘贴此页面中的代码之前请小心。 也许只有我,但我相信为了在几分钟内得到tz偏移,你需要

    int tzOffsetMin = (cal.get(Calendar.ZONE_OFFSET) + cal.get(Calendar.DST_OFFSET))/(1000*60);
    
    而不是Javadoc所说的,即:

    int tzOffsetMin = -(cal.get(Calendar.ZONE_OFFSET) + cal.get(Calendar.DST_OFFSET))/(1000*60);
    


    Calendar.ZONE_OFFSET
    提供UTC的标准偏移量(以毫秒为单位)。这不会随DST而改变。例如,对于美国东海岸时区,无论DST如何,此字段始终为-6小时


    Calendar.DST_OFFSET
    提供当前DST偏移量(以毫秒为单位)-如果有。例如,在使用DST的国家/地区的夏季,此字段的值可能为+1小时(1000*60*60毫秒).

    对于Java IMHO中与日期和时间处理相关的任何内容,您都应该切换到JodaTime。因为不是每个时区偏移量都是整数。换句话说,不是每个时区都比相邻时区早或晚一个小时。请查看@GilbertLeBlanc-它返回分钟,而不是小时。@pcalcao-我有一个来自API我不控制,我不能“切换到JodaTime”。我可以将Date对象包装为JodaTime对象,然后使用它…我建议这是一个可能的答案。@ripper234:Oops。谢谢你的更正。我接受这一点,因为
    他们实际上不推荐所有日期方法。
    。所有人都建议我切换到joda-冷静,这是我正在使用的API中的日期对象,我无法实现我现在可以更改API吗。