微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将 LocalDate 作为参数传递?

如何解决如何将 LocalDate 作为参数传递?

我正在尝试使用 LocalDate Java 类并将其作为方法中的参数传递。当我在 main 方法中实例化方法时,我需要将 LocalDate 作为参数传递,当我尝试 '2019-08-16' 时,它说文字太多,当我尝试 "2019-08-16" 时,它说无法应用到String

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class LocalDateExample {
    public void localDate(LocalDate date) {
        String dayOfMonth = Integer.toString(date.getDayOfMonth());
        System.out.println("Day Of Month is" + dayOfMonth); // this throws error
    }

    public static void main(String[] args) {
        LocalDateExample dd = new LocalDateExample();
        dd.localDate("2019-08-16"); // this line throws error
    }
}

解决方法

虽然我建议考虑重命名函数 localDate(),尤其是当它要求 LocalDate 参数时:

public class LocalDateExample {
    public void localDate(LocalDate date) {
        String dayOfMonth = Integer.toString(date.getDayOfMonth());
        System.out.println("Day Of Month is " + dayOfMonth);
    }

    public static void main(String[] args) {
        LocalDateExample dd = new LocalDateExample();
        dd.localDate(LocalDate.parse("2019-08-16"));
    }
}

应该可以,正如评论所暗示的那样。

,

TL;DR

    dd.localDate(LocalDate.of(2019,Month.AUGUST,16));

为什么会这样?

由于您的方法声明为接受 LocalDate 参数,因此您需要传递 LocalDate 的实例(不是字符串或任何其他类型)。 Java 没有自动类型转换,这就是它不能处理字符串的原因。

LocalDate 和其他类型的 java.time 都有用于创建对象的工厂方法。最常用的工厂方法简单地命名为 ofLocalDate 有两个重载的 of 方法。对于大多数用途,我更喜欢使用接受 Month 枚举常量作为中间参数的那个,如上例所示。另一个接受 int 作为月份数(从 1 = 一月开始),因此以下也适用:

    dd.localDate(LocalDate.of(2019,8,16));

顺便说一下,'2019-08-16' 有一个不同的问题,因为单引号 ' 用于字符文字。 '2' 是字符字面量,但需要表示一个字符,所以单引号之间不能有多个字符。

最后,尽管您的代码中有注释,但以下行不会导致任何错误(所以我在这里更正了注释):

    System.out.println("Day Of Month is" + dayOfMonth); // this works fine

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。