我正在尝试使用JSON.stringify从db获取当前日期的事务。但它在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年3月19日20:00:00 EDT 2014.如果我部署代码在当地的机器(印度)我得到了正确的日期。但是,如果我在位于美国的机器中部署代码,我就会遇到这个问题。任何人都可以帮我吗?
答案 0 :(得分:0)
India is 9:30 hours ahead of USA
Javascript / jquery将从客户端机器读取时间。 由于您在印度使用浏览器,因此获得20-03-2014。
服务器机器部署在美国。对于该服务器系统,当前日期 Wed Mar 19 20:00:00 EDT 2014 ,因此javabean对象正在使用该时间。
这就是你得到不同日期的原因
答案 1 :(得分:0)
确定您必须发送和使用时区的问题。
服务器端,在名为timezone的json中添加一个新字段,将其设置为日期的正确时区(以毫秒为单位),然后将其发送给客户端。
用户端,添加此
var jetLag = 0;
var serverTimeZone = json.timeZone;
var userTimeZone = new Date().getTimeZone() * 60 * 1000;
if( serverTimeZone > userTimeZone ){
jetLag = Math.abs(serverTimeZone - userTimeZone);
else {
jetLag = -Math.abs(serverTimeZone - userTimeZone);
};
var dateWithOffset = new Date(oldDate.getTime() + jetLag);