- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
目前,我有 2 个 Date 对象。两者都是在同一设备上使用相同的语言环境生成的。
1是用
生成的SimpleDateFormat FORMATTER = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z");
Date date1 = FORMATTER.parse(date_string);
另一个是用
生成的Date date2 = new Date();
现在,我想比较两个日期是否是同一天。
根据 Comparing two java.util.Dates to see if they are in the same day , 我可以用
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
cal1.setTime(date1);
cal2.setTime(date2);
boolean sameDay = cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR) &&
cal1.get(Calendar.DAY_OF_YEAR) == cal2.get(Calendar.DAY_OF_YEAR);
由于我在资源有限的移动设备上运行代码,我想知道,如果我使用 Date 的弃用方法,可能会出现什么问题?
date1.getYear() == date2.getYear() && date1.getMonth() == date2.getMonth() && date1.getDate() == date2.getDate()
http://user.xmission.com/~goodhill/dates/datedeprecation.htm
我知道很多人谈论 Date
本身并不能很好地处理国际化。但是,在上面的场景中,是否有任何可靠的例子可以证明,如果我使用已弃用的方法,事情就会出错?
最佳答案
对于那个具体的例子,不太可能出现任何问题。 @Jim 有一个可能的场景,但它是一个(极端)边缘案例。而且我怀疑如果您在不合时宜的时间更改了默认时区,您可能会遇到与其他日期/时间 API 类似的问题。
但是,有很多其他(不同的)示例在您使用 Date
API 时可能会出错。
现在,如果您知道 Date
API 及其实现中的所有“技巧和陷阱”,您当然可以避免它们,并安全地使用已弃用的方法。但是:
Date
被弃用的原因是 Java 设计者认为由于一些设计问题太难不能正确使用。 IMO,最好尊重他们的判断。
Since I'm running the code in mobile devices which resources are limited ...
我不知道有任何确凿的证据表明 Calendar
类比使用 Date
使用更多的资源。将您的优化决策建立在纯粹的假设 上是一个坏主意,尤其是当优化有引入新错误的明确风险时。 (而且你问这个问题的事实表明你知道存在潜在的风险......)
最好的策略是避免在新代码中使用过时的类和方法。时期。并且只根据确凿的证据进行优化。
关于java - 如果我使用已弃用的 Dates 方法查看它们是否在同一天,可能会出现什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19063293/
我是一名优秀的程序员,十分优秀!