用Java编写一个程序,如输入日期30 11 2009,程序将以30th Oct 2009的形...

发布网友

我来回答

4个回答

热心网友

文件路径换成你自己的就行了。。。

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;

/**
使用一个包括日,月,年日期值的整数数组,
将输入日期“30 11 2009”以“30th Oct 2009”的形式写入到文件中
*/
public class BaiDuTest {

public static void main(String[] args) {
System.out.println("Input your date as:dd mm yyyy");
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();

String dStr = str.substring(0,2);
String mStr = str.substring(3,5);
String yStr = str.substring(6,str.length());

int dd = Integer.valueOf(dStr).intValue();
int mm = Integer.valueOf(mStr).intValue();
int yy = Integer.valueOf(yStr).intValue();
String month = "";
String end = "";
String result = "";

File f = new File("d://BaiduTest.txt");
FileWriter fw;

switch(mm) {
case 1:
month = "Jan";
break;
case 2:
month = "Feb";
break;
case 3:
month = "Mar";
break;
case 4:
month = "Apr";
break;
case 5:
month = "May";
break;
case 6:
month = "Jun";
break;
case 7:
month = "Jul";
break;
case 8:
month = "Aug";
break;
case 9:
month = "Sept";
break;
case 10:
month = "Oct";
break;
case 11:
month = "Nov";
break;
case 12:
month = "Dec";
break;
default:
System.out.println("Input Error!");
break;
}

switch(dd) {
case 1:
end = "st";
break;
case 2:
end = "nd";
break;
case 3:
end = "td";
break;
default:
end = "th";
break;

}
result = dStr + end+ " " + month + " " + yStr;
try {
fw = new FileWriter(f);
fw.write(result);
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(result);

}
}

热心网友

三楼评价基本正确。昨天想做这题来着,考虑了半天,这个1st,2nd,3rd都没有好方法解决。
1楼明明直接能解析,还费那么多代码,没价值。而且没实现序号日期。
2楼序号规则不完整,11是th,21是st!月份可直接解析的。而且麻烦没效率。
期待有人做出高效简洁的做法。

热心网友

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.*;

public class SimIoDate {
private static Calendar cal = Calendar.getInstance();
private static final String PATTERN = "d MMM yyyy";
private static DateFormat format = new SimpleDateFormat(SimIoDate.PATTERN, Locale.US);

public static boolean write(String con, File dist) {
try {
FileWriter writer = new FileWriter(dist);
writer.write(con);
writer.close();
return true;
} catch (IOException e) {
e.printStackTrace();
return false;
}
}

public static synchronized String toDate(String src) {
if(!src.matches("(\\d{2}|\\d{1}) (\\d{2}|\\d{1}) (\\d{4}|\\d{2})")){
return null;
} else {
String [] params = src.split(" ");
cal.set(Calendar.YEAR, Integer.parseInt(params[2]));
cal.set(Calendar.MONTH, Integer.parseInt(params[1]) - 1);
cal.set(Calendar.DATE, Integer.parseInt(params[0]));
return format.format(cal.getTime());
}
}

public SimIoDate() {
}

public static void main(String[] args) {
String src = "1 8 2009";
String con = SimIoDate.toDate(src);
System.out.println(con);
SimIoDate.write(con, new File("date.txt"));
}

}

热心网友

1L的还不如
System.out.println(DateFormat.getDateInstance(DateFormat.MEDIUM,new Locale("mt")).format(new SimpleDateFormat("dd MM yyyy").parse("30 11 2009")));

2L的没错。

好吧,我也来写一段乱七八糟的。。。。。。
public static void main(String args[]) throws Exception {
System.out.println(getDateString("29 2 2012"));
System.out.println(getDateString("29 2 2010"));
}

static String getDateString(String in) {
String mouth[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "DEC"},
day[] = {"st", "nd", "td"};
int daylmt[]={31,28,31,30,31,30,31,31,30,31,30,31};
String part[] = in.trim().split(" ");
try {
int d = Integer.parseInt(part[0]), m = Integer.parseInt(part[1]), y = Integer.parseInt(part[2]);
return d + (d > 3 && d < 21 || d > 23&&d<=daylmt[m-1]+(m==2&&y%400==0||m==2&&y%4==0&&y%100!=0?1:0) ?
"th" : day[d > 20 ? d - 21 : d - 1]) + " " + mouth[m - 1] + " " + y;
} catch (Exception e) {
throw new IllegalArgumentException("日期格式错误");
}
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
3.9770s