当前位置: 首页 > 面试题库 >

使用ThreadLocal进行日期转换

朱越
2023-03-14
问题内容

我需要将传入日期字符串格式“ 20130212”(YYYYMMDD)转换为12/02/2013(DD / MM / YYYY)

使用ThreadLocal。我知道没有这种方法可以做到这一点ThreadLocal。谁能帮我?

转换不包含ThreadLocal

    final SimpleDateFormat format2 = new SimpleDateFormat("MM/dd/yyyy");
    final SimpleDateFormat format1 = new SimpleDateFormat("yyyyMMdd");
    final Date date = format1.parse(tradeDate);
    final Date formattedDate = format2.parse(format2.format(date));

问题答案:

Java中的ThreadLocal除了编写不可变的类外,还是一种实现线程安全的方法。由于SimpleDateFormat不是线程安全的,因此可以使用ThreadLocal使其成为线程安全的。

class DateFormatter{

    private static ThreadLocal<SimpleDateFormat> outDateFormatHolder = new ThreadLocal<SimpleDateFormat>() {
    @Override
    protected SimpleDateFormat initialValue() {
        return new SimpleDateFormat("MM/dd/yyyy");
    }
};

private static ThreadLocal<SimpleDateFormat> inDateFormatHolder = new ThreadLocal<SimpleDateFormat>() {
    @Override
    protected SimpleDateFormat initialValue() {
        return new SimpleDateFormat("yyyyMMdd");
    }
};

public static String formatDate(String date) throws ParseException { 
    return outDateFormatHolder.get().format(
            inDateFormatHolder.get().parse(date));
}        
}


 类似资料:
  • 问题内容: 我有标准ISO 8601格式的日期/时间值,例如 2010-07-26T11:37:52Z 。 我想要日期 为2010年7月26日(dd-mon-yyyy) 。我该怎么做? 问题答案: 构造两个SimpleDateFormat对象。首先,您将值从()解析为Date对象,第二次用于将Date对象转换为字符串,例如 解析可能会引发ParseException,因此您需要捕获并处理它。

  • 问题内容: 跟进查询如何工作,找不到说明跟进查询如何工作的文档,是否还有其他类似的强制转换值查询? SELECT date‘2017-01-01’FROM dual; 提供结果1/1/2017 问题答案: 您的查询使用的是日期文字。从Oracle文档中: 您可以将DATE值指定为字符串文字,或者可以使用TO_DATE函数将字符或数字值转换为日期值。DATE文字是Oracle Database接受T

  • 问题内容: 我正在尝试将以下字符串转换为日期类型: 但这是打印以下内容: 我如何获得这个日期来保留毫秒? 问题答案: 实际上,convertedDate对象确实包含毫秒信息。这里的问题是toString()方法格式不能打印毫秒。 做 您还可以检查ms是否设置为

  • 我正在尝试动态转换日期。我试过这个方法,但它是无效的。 如何使其成为对象的数组?

  • 周日->明谷-0 周一->赛宁-1 周二->Selasa-2 帮我谢谢

  • 问题内容: 我使用Hibernate(4.2)作为持久性提供程序,并且我有一个包含Date字段的JPA实体: 对应于START_DATE的列定义为(无时区)。 我在应用程序内部使用Joda- Time(2.3)处理日期(始终使用UTC),并且在持久化Entity之前,我使用Joda的类方法获取JDK 对象以遵守映射。 : 当我在数据库中查看存储的值时,我注意到某个地方(JDK?Hibernate?