【发布时间】:2014-03-20 06:57:18
【问题描述】:
我正在尝试使用 JSON.stringify 从数据库中获取当前日期的交易。但它在 java bean 对象中取上一个日期。
我选择开始日期和结束日期为当前日期(2014 年 3 月 20 日)。以下是jsp json中的代码。
var json = {
"reportTypeId" : reportTypeId,
"fromDate" : $.datepicker.formatDate('yy-mm-dd', fromDate),
"toDate" : $.datepicker.formatDate('yy-mm-dd',toDate),
"jurisdictionId" : jurisdictionId
};
alert(JSON.stringify(json));
$.ajax({
url : "adminviewreports/displayReports",
type : "POST",
dataType : 'json',
contentType : 'application/json',
data : JSON.stringify(json),
success : function(data) {
$("#spinner").hide();
if (reportTypeId == 2) {
loadAuditTable(data);
$('#activity').show();
$("#auditReportDiv").show();
}
if (reportTypeId == 3) {
loadSecurityTable(data);
$('#security').show();
$("#securityReportDiv").show();
}
},
error : function() {
$("#spinner").hide();
alert("Error Occurred while getting audit events");
}
});
在java bean对象中是日期
private Date fromDate;
private Date toDate;
public Date getFromDate() {
LOGGER.error("in bean fromDate============"+fromDate);
return fromDate;
}
/**
* @param fromDate the fromDate to set
*/
public void setFromDate(Date fromDate) {
this.fromDate = fromDate;
}
/**
* @return the toDate
*/
public Date getToDate() {
LOGGER.error("in bean toDate============"+fromDate);
return toDate;
}
/**
* @param toDate the toDate to set
*/
public void setToDate(Date toDate) {
this.toDate = toDate;
}
如果我将警报放在 json 中,我将当前日期设置为 2014-03-20,但是在将此日期设置为 javabean 对象时,它会将其设置为 2014 年 EDT 20:00:00 Wed Mar 19 20:00:00。如果我部署代码在本地机器(在印度)我得到了正确的日期。但是如果我在位于美国的机器中部署代码,我就会遇到这个问题。谁能帮我解决这个问题?
【问题讨论】:
-
如下答案所示,问题是客户的日期被视为绝对时间。该问题可以通过使用 ISO 时间戳或使用 UTC 毫秒方法来保存日期来解决。你能分享更多关于你将使用日期值的内容吗?
-
@aravind 我检查了数据库中的日期和 20 日,数据库中当前日期的记录很少。但是由于 java 对象的日期是以前的日期,所以它没有显示数据。
-
好的,然后尝试检查何时从客户端收到它。如果在保存到数据库和数据库之前它仍然是当前日期,那么你的问题在于从你的数据库中读取日期。不是 JSON,因为 JSON 只是向服务器“14-03-20”发送一个字符串
-
它正在为任何事件保存当前日期。但问题是通过 json 调用将当前日期作为输入参数传递时,它在 json 转换的 java bean 对象中取上一个日期。