用Java获取当前年份的整数值

时间:2020-03-06 14:45:09  来源:igfitidea点击:

我需要将Java中的当前年份确定为整数。我只能使用java.util.Date(),但已弃用。

解决方案

int year = Calendar.getInstance().get(Calendar.YEAR);

不知道这是否符合不设置新日历的标准? (为什么反对这样做?)

最简单的方法是从日历中获取年份。

// year is stored as a static member
int year = Calendar.getInstance().get(Calendar.YEAR);

最简单的方法(使用日历,抱歉)是:

int year = Calendar.getInstance().get(Calendar.YEAR);

还有新的Date and Time API JSR,以及Joda Time

如果应用程序大量使用Date和Calendar对象,那么我们确实应该使用Joda Time,因为java.util.Date是可变的。更新其字段时,java.util.Calendar会出现性能问题,并且对于日期时间算法而言比较笨拙。

我在图书馆中使用特殊功能来处理天/月/年整数-

int[] int_dmy( long timestamp ) // remember month is [0..11] !!!
{
  Calendar cal = new GregorianCalendar(); cal.setTimeInMillis( timestamp );
  return new int[] { 
    cal.get( Calendar.DATE ), cal.get( Calendar.MONTH ), cal.get( Calendar.YEAR )
  };
};

int[] int_dmy( Date d ) { 
 ...
}

我们可以使用整数数学来完成全部操作,而无需实例化日历:

return (System.currentTimeMillis()/1000/3600/24/365.25 +1970);

新年可能会休息一两个小时,但我没有觉得这是个问题吗?