我知道我可以使用以下代码将 long 转换为 Data 并获取其小时部分:
Calendar c = Calendar.getInstance();
c.setTimeInMillis(long-variable);
c.get(Calendar.HOUR_OF_DAY);
但这确实效率不高,而且由于此代码从多个线程运行,我不能只重用 Calendar 对象,是否有更有效的方法从日期的长表示中获取小时部分?
谢谢!
最佳答案
Calendar
不是线程安全的,所以Calendar
实例应该在多线程时同步。当然,使用ThreadLocal
性能良好.像这样:
private ThreadLocal<Calendar> calendar=new ThreadLocal<Calendar>(){
@Override
protected Calendar initialValue() {
return Calendar.getInstance();
}
};
public void foo(){
Calendar c = calendar.get();
c.setTimeInMillis(new Date().getTime());
System.out.println(c.get(Calendar.HOUR_OF_DAY));
}
关于Java 有效地从长表示中获取时间部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44112563/