SDR*_*yes 1 java time timezone
我们在服务器中记录了一些事件,我们获取每个事件的当前时间,实例化一个新的Date对象.像这样new Date()
但昨天出了点问题.记录器显示此条目已记录2012-01-21 14:06:04,但事件与此记录的时间不同new Date():2012-01-21 13:06:04
有一个小时的差异.
尽管如此,其他事件在这个错误事件之前和之后得到了正确的时间.
奖金
我们使用这个格式化程序记录事件:
// Of course, this means that we read our buggy timestamp like: '120121130604'
// but that's irrelevant :p
public static SimpleDateFormat messageDateTimeFormatter = new SimpleDateFormat("yyMMddHHmmss");
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
鉴于您的SimpleDateFormat是一个公共静态字段,我想多个线程同时使用它.但SimpleDateFormat不是线程安全的:
日期格式未同步.建议为每个线程创建单独的格式实例.如果多个线程同时访问格式,则必须在外部进行同步.
同步其用途,或将其存储在ThreadLocal变量中,或每次创建一个新实例.
你得到的可能是由于同时使用SimpleDateFormat导致的一些竞争条件或其他线程相关的错误.