将LocalDateTime对象转换为LocalDateTime

问题描述

我是Java的新手,我正在研究Java 8。

我正在尝试将LocalDateTime对象转换为LocalDateTime,但无法找到任何方法,除非将其转换为String。当基础对象类型为LocalDateTime时,是否有任何直接方法可以将Object转换为LocalDateTime?

此外,如果有任何转换方法,它也可以用于基础的字符串类型LocalDateTime对象吗?

下面是我当前的代码,它将对象转换为字符串,然后再将其转换为LocalDateTime,因为LocalDateTime.parse方法需要输入字符串。

public static LocalDateTime toDateTime(Object dateTimeObject) {
    LocalDateTime dateTime = LocalDateTime.parse(dateTimeObject.toString(),DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss"));
    
    return dateTime;
}

解决方法

如果对象是LocalDateTime,则可以投射对象。

public static LocalDateTime toDateTime(Object dateTimeObject) {
    if (dateTimeObject instanceof LocalDateTime) {
        return (LocalDateTime) dateTimeObject;
    }
    return null;
}
,

根据Java 8 LocalDateTime API,没有任何方法可以接受Object参数并返回LocalDateTime。但是有一个采用CharSequence参数,这就是为什么在将对象转换为String时它可以工作的原因,以及如果仅传递Object参数就不能工作的原因。如果您不想调用toString()方法,则也许toDateTime(Object o)的参数应该是其他类型。