我有一个日期数组。我想知道该阵列中有多少工作日。那我该怎么做才能用java ..
*here i read lines from csv file & put those into values. *values[2] contain the dates of that csv file. *So now i want to find number of weekdays in values[2].
FileInputStream fis=new FileInputStream("c:/sample.csv");
InputStreamReader isr=new InputStreamReader(fis);
BufferedReader bf = new BufferedReader(isr);
while (bf.ready()) {
String line = bf.readLine();
String[] values=line.split(",");
String date=values[2];
}
这是我的csv文件
11/1/2010,jhone
11/3/2010,alex
11/6/2010,jhone
11/2/2010,neil
11/20/2010,neil
11/15/2010,jhone
答案 0 :(得分:2)
String input = "11/1/2010";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM/d/yyyy");
Date date = simpleDateFormat.parse(input);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
boolean isWeekday = dayOfWeek >= 2 && dayOfWeek <= 6;
System.out.println(isWeekday);
答案 1 :(得分:1)
或者您可以使用Joda-Time库。
DateTimeFormatter fmt = DateTimeFormat.forPattern("MM/dd/yyyy");
String dayOfWeek = fmt.parseDateTime(values[2]).dayOfWeek().getAsText();
然后你可以做一些比较逻辑来检查字符串是'星期六'还是'星期日'。 Joda-Time API还允许您将值作为int获取,这意味着您只需要检查返回的整数是否大于5(1-Monday ... 7-Sunday)。
// int weekDayCount = 0; // initialise this somewhere.
weekDayCount += ((fmt.parseDateTime(values[2]).dayOfWeek().get() < 6) ? 1 : 0);
希望有所帮助。
答案 2 :(得分:0)
我看到你用字符串读取它们,但是你没有提到日期的格式? (例如YYYY-MM-DD)
您应该将字符串解析为Date对象(使用DateFormat),并使用它来设置Calendar实例的时间。使用日历,您可以轻松获得该日期的工作日。
答案 3 :(得分:0)
查看Calendar课程。它有返回星期几的方法。然后你可以在它周围设置一个简单的逻辑,以确定它是否是一周工作日。
http://download.oracle.com/javase/1.5.0/docs/api/java/util/Calendar.html