Java 将字符串转换为表示日期的整数
我需要将表示日期的字符串转换为日期 日期是这样构造的:Java 将字符串转换为表示日期的整数,java,Java,我需要将表示日期的字符串转换为日期 日期是这样构造的: 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 { Sy
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个字符
我的想法是在字符串中循环查找字符/
的出现时间,但我觉得有更好的方法
实现这一点的最佳方法是什么?使用'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);
}
你可以这样做:
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]));
也许您可以使用string类的方法来获取子字符串,或者使用某种字符串标记器(我不太懂java,所以无法帮助您确定确切的名称)。 但是“幕后”这些函数也必须遍历字符串,没有办法绕过它。
我认为你的想法很好。这只是一个问题,您是想掌握java中内置的可能性,还是只想快速完成:)也许这段代码可以帮助您
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;
}
}
}
Java中已经有一个
Date
类(和一个DateFormat
来完成您需要的操作)。我建议不要重新发明轮子,或者至少不要使用相同的名称。我的问题措辞错误:我需要创建另一个将日期作为字符串的构造函数。我尝试了这个方法,但它给了我一个错误:“构造函数调用必须是构造函数中的第一条语句。”这是我的错误:public Date(String s){String[]dateStrings=s.split(“/”);m=Integer.parseInt(dateStrings[0]);d=Integer.parseInt(dateStrings[1]);y=Integer.parseInt(dateStrings[2]);这(m,d,y);
如果可能,我建议使用静态工厂方法。