gpt4 book ai didi

java - 为什么不推荐使用 "new Date(int year, int month, int day)"?

转载 作者:IT老高 更新时间:2023-10-28 20:22:54 28 4
gpt4 key购买 nike

我最近继承的应用程序充满了关于构造函数的弃用警告:

Date d = new Date(int year, int month, int day)

有没有人知道或可以指出为什么像这样简单的东西被这样“替换”的原因:

Date d = null;
Calendar cal = GregorianCalendar.getInstance();
cal.set(1900 + year, month, day);
d = cal.getTime();

现在,显然弃用警告本身不是问题,但你能想象如果这个构造函数被删除,数百万的 LOC 会痛苦地哭泣吗?

在我简短的基准测试中,后者需要大约 50% 的时间来执行。

最佳答案

最初,Date 旨在包含有关日期的所有逻辑,但 API 设计者最终意识到他们迄今为止所拥有的 API 严重不足,无法干净地扩展以正确处理诸如此类的问题作为时区、语言环境、不同的日历、夏令时等。

因此他们创建了 Calendar 来处理所有这些复杂性,并将 Date 降级为简单的时间戳,弃用其处理格式化、解析和单个日期字段的所有功能.

顺便说一句,在内部,这些方法,例如 Date(int, int, int) 构造函数现在调用 Calendar,所以如果您发现速度有所不同,那么您就是调用 Calendar 时出错。

底线:不是 Java 的 Calendar API 过于复杂,而是人类对日期的概念,而 Calendar 的唯一问题是它提供的最常见用法的快捷方式。

关于java - 为什么不推荐使用 "new Date(int year, int month, int day)"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/460423/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com