java日期在生产机器中被移动了一天

prdp8dxp  于 2021-08-25  发布在  Java
关注(0)|答案(1)|浏览(226)

我有一个带有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;
kr98yfug

kr98yfug1#

我想问题在于 SimpleDateFormat . 该模式不包含时区- dd-MM-yyyy . 作为参数传递的日期不一定与服务器具有相同的时区。这就是为什么您可能会面临转换问题。
我认为你应该使用类似的东西。 DateTimeFormatter.ISO_OFFSET_DATE_TIME 作为一种格式模式。
附笔 java.util.Date 不建议再使用。看看 java.time.ZonedDateTime .

相关问题