我正在尝试修改一些代码以使用 Joda-Time
而不是 java.sql.Timestamp
目前代码使用Threadlocal
和SimpleDateFormat:
public static final ThreadLocal<DateFormat> FORMAT_TIMESTAMP = new ThreadLocal<DateFormat>() {
@Override
protected DateFormat initialValue() {
return new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
}
};
public static String format(Timestamp timestamp) {
return FORMAT_TIMESTAMP.get().format(timestamp);
}
我的理解是Joda-time是线程安全的,所以没有必要使用ThreadLocal
考虑到这一点,我将代码修改为:
public static String format(Instant timestamp) {
Instant formated = Instant.parse(timestamp.toString(), DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ssXXX"));
return formated.toString();
}
如果我想稍后在代码中将这些值插入到数据库中,我打算使用 this方法。
假设我正在以正确的方式解决这个问题,是否有像 DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ssXXX")
这样的格式/p>
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX")
目前我收到一个格式无效
异常
最佳答案
X
无法被 Joda 识别。将 XXX
替换为 ZZ
应该可以满足您的需要。
因为 DateTimeFormat
是线程安全的,您可以跨线程共享它。所以您的代码可能如下所示:
private static final DateTimeFormatter FORMAT_TIMESTAMP =
DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ssZZ");
public static String format(Instant timestamp) {
return FORMAT_TIMESTAMP.print(timestamp);
}
关于java - Joda-Time : convert SimpleDateFormat pattern to DateTimeFormat. forPattern,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34338338/