2

我有一个奇怪的情况。

在我的应用程序中,当用户访问应用程序中的某些内容时,我们将插入一条带有当前日期 (MM/dd/yyyy) 的记录。

有时,插入的日期不是当前日期的错误值。(即:'21/09/2014'、'13/09/2180'、'22/08/2179')。我们正在使用 JPA 从 JAVA 插入记录。请帮助我找出问题或解决方案。

下面是代码,我在其中准备/传递域对象的值。

Date curDate = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
UserAccessObj.setAccessedDate(sdf.parse( sdf.format( curDate ) ));

这里setAccessedDate (Date) 是域对象中的 java.util.Date 设置方法。

那么,可能是什么问题?我无法追踪问题。

4

4 回答 4

1

而不是这个:

UserAccessObj.setAccessedDate(sdf.parse(sdf.format(curDate)));

尝试这个:

UserAccessObj.setAccessedDate(curDate);
于 2013-03-21T10:01:51.070 回答
0

sdf.parse( sdf.format( curDate ) )

绝对必要?您正在获取日期,将其转换为字符串,然后将其解析为日期?我怀疑你这样做是为了摆脱(误导性命名的)Date对象的时间部分?我认为按照该线程中的答案Calendar使用该类更快/更安全。最好的答案是使用Joda-Time API

我不知道它是否会导致您的问题,但它会增加不必要的复杂性。还要注意这SimpleDateFormat不是线程安全的,如果上面的代码共享一个SimpleDateFormat 肯定会导致特殊行为的实例。同样,Joda-Time 在该域中提供线程安全。

于 2013-03-21T09:58:10.343 回答
0

以这种格式将输入日期保存到数据库中:“yyyy-MM-dd”。正确的日期将被保存。

于 2015-04-01T09:17:11.447 回答
0

我认为你可以做的是使用 Calendar 对象来获取当前系统时间

Calendar cal = Calendar.getInstance();

然后将其转换为 SimpleDateFormat。

SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
dateFormat.format(cal.getTime());

然后你就有了自己的代码

UserAccessObj.setAccessedDate(sdf.parse( sdf.format( curDate ) ));

希望能帮助到你 :)

于 2013-03-21T11:09:00.003 回答