Java 有效地从长表示中获取时间部分

标签 java

我知道我可以使用以下代码将 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/

相关文章:

java - 将具有不同数据类型的文件读入树中

没有spring security的java mvc授权

java - Broadleaf Commerce Tomcat 安装

Java/Android - 设置 DecimalFormat 以仅显示尾数

java - Spring @Transaction方法通过同一个类内的方法调用,不起作用?

java - 我可以在远程/本地接口(interface)中使用继承吗? (EJB3)

java - 在 Spring 中实现策略设计模式的最佳方式

java - 使用 Spring Security 实现无缓存

java - 如何在 Java 枚举中使用 name() 方法

java - 如何在没有 ModelAndView 对象的情况下将数据绑定(bind)到 View