我需要将表示日期的字符串转换为日期。
日期的构造如下:
private int m;
private int d;
private int y;
public Date(int month, int day, int year) {
if (isValidDate(month, day, year)) {
m = month;
d = day;
y = year;
} else {
System.out.println("Error: not a valid date");
System.exit(0);
}
}
需要转换为此日期对象的字符串格式为:
"month/day/year"
月份是1或2个字符,日期是1或2个字符,年份可以是1到4个字符。
我的想法是遍历字符串并找到字符/
何时出现,但我觉得有更好的方法可以解决它。
实现这一目标的最佳方法是什么?
答案 0 :(得分:1)
你可以这样做:
String date = "14/02/2013";
String [] splitDate = date.split("/");
Date date = new Date(Integer.parseInt(splitDate[0]),
Integer.parseInt(splitDate[1]),
Integer.parseInt(splitDate[2]));
答案 1 :(得分:0)
Use`String.split( “/”)
它返回每个标记的字符串数组,然后你只需要将每个标记解析成一个整数并创建日期对象。
您可能也希望查看DateFormat类。它可能能够为你解析字符串。
编辑:
替代静态工厂方法。
public static Date asDate(String s) {
String[] dateStrings = s.split("/");
int m = Integer.parseInt(dateStrings[0]);
int d = Integer.parseInt(dateStrings[1]);
int y = Integer.parseInt(dateStrings[2]);
return new Date(m, d, y);
}
答案 2 :(得分:0)
也许这段代码可以帮到你。
public class TestDate {
private int m;
private int d;
private int y;
public static void main(String[] args) {
String date = "02/14/2013";
String[] splitDate = date.split("/");
TestDate td = new TestDate();
td.Date(Integer.parseInt(splitDate[0]),
Integer.parseInt(splitDate[1]),
Integer.parseInt(splitDate[2]));
System.out.println(td.m +"/"+td.d+ "/"+td.y);
}
public void Date(int month, int day, int year) {
if (isValidDate(month, day, year)) {
m = month;
d = day;
y = year;
} else {
System.out.println("Error: not a valid date");
System.exit(0);
}
}
private static boolean isValidDate(int month, int day, int year) {
String stDate = month + "/" + day + "/" + year;
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
sdf.setLenient(false);
try {
sdf.parse(stDate);
return true;
} catch (ParseException e) {
e.printStackTrace();
return false;
}
}
}
答案 3 :(得分:-1)
也许你可以使用字符串类的方法来获取你的子字符串,或者使用某种字符串标记器(我不熟悉java,所以无法帮助你准确的名字)。 但是“引擎盖下”这些函数也必须遍历字符串,没有办法绕过它。 所以我认为你的想法很好。你想要掌握java中内置的可能性只是一个问题,或者你只是想快速完成它:)