日期:2014-05-18  浏览次数:20688 次

SimpleDateFormat 奇怪,时间字符串转化为日期类型时候有时候出问题,求救
public static SimpleDateFormat DATA_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");


public void setStartTimeStr(String startTimeStr) {
this.startTimeStr = startTimeStr;
logger.info("po setStartTimeStr startTimeStr "+startTimeStr);
try {
this.startTime = DATA_FORMAT.parse(startTimeStr);
logger.info("po setStartTimeStr startTimeStr after startTime "+startTimeStr);
} catch (ParseException e) {
logger.info("po setStartTimeStr startTimeStr excepion="+e.getMessage());
e.printStackTrace();

}

}
 代码就是上述这个样子:在setStartTimeStr()时候,有时候时间转化成不是对应的时间,成了1970年某个时候,有时候成了几千年之后,究竟是怎么回事啊?
运行环境是这样的:我是提供的webservice接口,调用方传过来对应参数,时间参数都是年月日时分秒的形式的字符串,如2013-03-08 15:30:20,调用方式8个线程同时调用这个接口,他们是C++,我不知道这个跟多线程和语言有没有关系

------解决方案--------------------
不要把SimpleDateFormat作为static变量。因为它是线程不安全的。每次new一个
------解决方案--------------------
是不是static不是关键,而是你同时N个线程在访问这个SDF。
------解决方案--------------------
public static SimpleDateFormat DATA_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
每次都new 一个