Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 日期值_Java_Mysql_Jdbc - Fatal编程技术网

Java 日期值

Java 日期值,java,mysql,jdbc,Java,Mysql,Jdbc,我的代码有问题 我有JavaEE应用程序和MySQL数据库。我有一个对象,它有可变的dateOfBirth。如果我将此变量设置为20/5/1978并保存表单,则值si将更改为19/5/1978。通过调试,我发现该值为19/5/1978 23:00:00。我对时区有些问题。(但并不是每个约会都是如此……夏天的时间有问题吗?) 与数据库的连接是: ?useUnicode=true&useGmtMillisForDatetimes=true&useJDBCCompliantTimezo

我的代码有问题

我有JavaEE应用程序和MySQL数据库。我有一个对象,它有可变的dateOfBirth。如果我将此变量设置为20/5/1978并保存表单,则值si将更改为19/5/1978。通过调试,我发现该值为19/5/1978 23:00:00。我对时区有些问题。(但并不是每个约会都是如此……夏天的时间有问题吗?)

与数据库的连接是:

?useUnicode=true&useGmtMillisForDatetimes=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&useTimezone=true&serverTimezone=Europe/Prague
服务器上的系统时区是CET,时区是系统

如何解决这个问题?我不懂

我忘了,DB的值是正确的!我使用primefaces,但我使用自己的日期转换器,它返回与“default”相同的问题。 在java中,我使用get set fot:

@NotNull(message = "{client.birthDate.NotNull}")
@Temporal(TemporalType.DATE)
private Date birthDate;
编辑:我使用这个转换器

@ApplicationScoped
@Named(value = "dateTimeConverter")
@FacesConverter("dateTimeConverter")
public class DateTimeConverter implements Converter {


    @SneakyThrows
    @Override
    public Object getAsObject(FacesContext context, UIComponent component, 
    String value) {
        System.out.println("v:" + value);
        SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
        Date date = sdf.parse(value);
        System.out.println("f:" + date);
        return date;
    }

    @Override
    public String getAsString(FacesContext context, UIComponent component, 
    Object value) {
        System.out.println("to:" + value.toString()); //HERE I get 
    19/05/1978!!!
        SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
        System.out.println("timezone:" + sdf.getTimeZone());
        sdf.setTimeZone(TimeZone.getTimeZone("Europe/Prague"));
        String date = sdf.format(value);
        System.out.println("s:" + date);
        return date;
    }
}
编辑2:

<p:calendar id="#{id}_birthDate" placeholder="#{msg.BirthDate}" yearRange="c-100:c" value="#{client.birthDate}" navigator="true" pattern="dd.MM.yyyy" disabled="#{ViewBean.z.locked}"> <f:converter converterId="dateTimeConverter"/> <p:ajax listener="#{ViewBean.invalidate()}" update="@(.buttonPanelClass)" event="dateSelect"/> </p:calendar>


也许您可以提问并发布从数据库中检索值的java代码?mysql是否会更改数据或java表单?阅读一些mysql文档似乎useLegacyDatetimeCode=false不会让您发送的其他时间参数生效:/…我尝试了一下,但结果是一样的:(primeface中的日期是什么样子?(代码)