如何在阵列中找到工作日的数量

时间:2011-01-07 06:51:24

标签: java

我有一个日期数组。我想知道该阵列中有多少工作日。那我该怎么做才能用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

4 个答案:

答案 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