使用下面的代码,我注意到有时日期格式不正确。为了让它变得更奇怪,有时timeStamp会有正确的日期,timeStampCopy会有错误的日期,反之亦然。为什么我的Java Calendar.setTime()偶尔设置错误时间?
public static Timestamp method(String date, DateFormat dateFormat) throws Exception {
// date is always "2017-02-17"
// original
GregorianCalendar gCal = new GregorianCalendar();
gCal.setTime(dateFormat.parse(date));
Timestamp timeStamp = new Timestamp(gCal.getTimeInMillis());
// copy
GregorianCalendar gCalCopy= new GregorianCalendar();
gCalCopy.setTime(dateFormat.parse(date));
Timestamp timeStampCopy = new Timestamp(gCalCopy.getTimeInMillis());
if (!timeStamp.toString().contains("2017-02-17"))
System.out.println(timeStamp.toString());
if (!timeStampCopy.toString().contains("2017-02-17"))
System.out.println(timeStampCopy.toString());
return timeStamp;
}
我不知道这可能是导致它,但我这个使用Date对象和我有同样的问题尝试。我认为这可能是一个解析问题,但由于它做了两次相同的事情,我不确定。
下面是一些我得到的值:
timeStamp is: 2017-02-17 00:00:00.0
timeStampCopy is: 1700-02-17 00:00:00.0
什么是你的功能输入 –
你是否在线程之间共享'DateFormat'实例? –
@AndyTurner是的!我刚刚补充说,由于某种原因,当我向该方法添加“synchronized”时,它似乎突然开始正常工作。不知道为什么。 – Overclock