对于这个程序,用户被告知以"mm/dd/yyyy"的形式输入数据,我正尝试使用参数为"/"的indexOf()
方法将日期字符串分解为三个子字符串。
我试过这样做:
String monthString = dateString.substring(0,dateString.indexOf("/"));
String dayString =
dateString.substring(dateString.indexOf("/"),DateString.indexOf("/")+1)
谢谢。编辑谢谢大家的回复,但我的老师说我不能使用拆分功能。他说我只需要indexOf("/"(和substring((就可以解决这个问题。我需要两个对indexOf("/"(的调用和四个对substring((的调用。
String[] element = dateString.split("/");
String strDay = element[0];
String strMonth = element[1];
String strYear = element[2];
这就是你想要的。
您可以使用Java日期API而不是split((方法
String dateString = "10/30/2018";
try {
DateFormat dateFromatter = new SimpleDateFormat("MM/dd/yyyy");
Calendar calendar = Calendar.getInstance();
calendar.setTime(dateFromatter.parse(dateString));
System.out.println("Date:" + calendar.get(Calendar.DATE));
System.out.println("Month:" + calendar.get(Calendar.MONTH));
System.out.println("Year:" + calendar.get(Calendar.YEAR));
} catch (Exception e) {
e.printStackTrace();
}
输出
Date:30
Month:9
Year:2018
对于月份字段日历。月份从0开始,表示1月=0,2月=1。请参阅Java文档
dateString.split("[/]");
为您提供字符串数组。split()
函数在regex
中进行输入,这就是添加"[]"
的原因。
如果dateString为"dd/mm/yy",则dateString.split("[/]")
返回由{"dd","mm","yy"}
组成的String
数组。
如果您使用的是Java 8或更高版本,并且实际上您正在处理日期和时间,那么我认为您应该尝试一下LocalDate.parse
,对于您的问题,您可以很容易地实现它:
LocalDate theDate = LocalDate.parse("08/22/2018", DateTimeFormatter.ofPattern("MM/d/yyyy"));
System.out.println("year: " + theDate.getYear() + " month: " + theDate.getMonthValue() + " day: " + theDate.getDayOfMonth());
输出将是:
year: 2018 month: 8 day: 22