我有一个带有jsp的java spring mvc项目,我使用“jquery datetimepicker”操作日期,问题是在本地正确记录了日期,但在生产中,日期总是移动一天,我使用 TimeZone.getDefault()
,它和我的本地机器一样,如果有人想检查的话
代码jsp:
<div class='col-lg-12'>
<div class='form-group'>
<fmt:formatDate pattern="dd-MM-yyyy" value="${child.dateNaissance}" var="myDateVar"/>
<input type="text" id="myDatepicker${status.index}" class='form-control date_input' required="required"
name='parent.enfants[${status.index}].dateNaissance' value='${myDateVar}'
placeholder="Date de naissance* (JJ-MM-AAAA)" >
</div>
</div>
jquery:
(function($) {
var today = new Date();
var lastDate = new Date(today.getFullYear(), 11, 31);
var defaultDate = new Date();
defaultDate.setMonth(defaultDate.getMonth() - 30);
var minimumDate = new Date();
minimumDate.setFullYear(minimumDate.getFullYear() - 18);
var datePickerOptions = {
todayHighlight: true,
changeMonth: true,
changeYear: true,
showOtherMonths: true,
selectOtherMonths: true,
minDate : minimumDate,
yearRange: "-21:+0",
maxDate: defaultDate,
dateFormat: "dd-mm-yy",
closeText: "Fermer",
prevText: "Précédent",
nextText: "Suivant",
currentText: "Aujourd'hui",
monthNames: ["janvier", "février", "mars", "avril", "mai", "juin",
"juillet", "août", "septembre", "octobre", "novembre", "décembre"
],
monthNamesShort: ["janv.", "févr.", "mars", "avr.", "mai", "juin",
"juil.", "août", "sept.", "oct.", "nov.", "déc."
],
dayNames: ["dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi"],
dayNamesShort: ["dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam."],
dayNamesMin: ["D", "L", "M", "M", "J", "V", "S"],
beforeShow : function() {
setTimeout(function() {
$('.ui-datepicker').css('z-index', 99999999999999);
$('.ui-datepicker').css('position', 'absolute');
}, 0);
}
};
$(document)
.ready(
function() {
$(".birthdayDatePicker").datepicker(datePickerOptions);
});
})(jquery);
java代码:
/**
* Binding de la date en format standard
*
* @param binder Binder
*/
@InitBinder
public void initBinder(WebDataBinder binder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
dateFormat.setLenient(false);
CustomDateEditor editor = new CustomDateEditor(dateFormat, true);
binder.registerCustomEditor(Date.class, editor);
}
实体:
@DateTimeFormat(pattern = "dd-MM-yyyy")
private Date dateNaissance;
1条答案
按热度按时间kr98yfug1#
我想问题在于
SimpleDateFormat
. 该模式不包含时区-dd-MM-yyyy
. 作为参数传递的日期不一定与服务器具有相同的时区。这就是为什么您可能会面临转换问题。我认为你应该使用类似的东西。
DateTimeFormatter.ISO_OFFSET_DATE_TIME
作为一种格式模式。附笔
java.util.Date
不建议再使用。看看java.time.ZonedDateTime
.