如何将 LocalDate 作为参数传递?
How to pass LocalDate as an argument?
我正在尝试使用 LocalDate
Java class 并将其作为方法中的参数传递。当我在 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 有创建对象的工厂方法。最常用的工厂方法简单命名为 of
。 LocalDate
有两个重载的 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
我正在尝试使用 LocalDate
Java class 并将其作为方法中的参数传递。当我在 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 有创建对象的工厂方法。最常用的工厂方法简单命名为 of
。 LocalDate
有两个重载的 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