2011-01-07 5 views
0

У меня есть массив даты. Я хочу найти, сколько будних дней находятся в этом массиве. Так как я могу это сделать с помощью 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

мой формат MM/d/yyyy – Chamal

+0

вы можете разместить немного своего CSV-файла –

+0

здесь я отправляю файл csv – Chamal

ответ

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); 
0

Я вижу, вы читали их в виде строк, но вы не сделали укажите формат дат? (Как, например, YYYY-MM-DD)

Вы, вероятно, следует разобрать строку в Date объекта (с помощью DateFormat), и использовать, чтобы установить время в Calendar инстанции. С календарем вы можете легко получить будний день со дня.

+0

мой формат MM/d/yyyy – Chamal

1

Или вы могли бы использовать библиотеку Joda-Time.

DateTimeFormatter fmt = DateTimeFormat.forPattern("MM/dd/yyyy"); 
String dayOfWeek = fmt.parseDateTime(values[2]).dayOfWeek().getAsText(); 

Затем вы можете выполнить некоторую логику сравнения, чтобы проверить, является ли строка «суббота» или «воскресенье». API-интерфейс Joda-Time также позволяет вам получить значение как int, что означает, что вам просто нужно проверить, вернётся ли целое число больше 5 (1-понедельник ... 7-воскресенье).

// int weekDayCount = 0; // initialise this somewhere. 
weekDayCount += ((fmt.parseDateTime(values[2]).dayOfWeek().get() < 6) ? 1 : 0); 

Надеюсь, что это поможет.

Смежные вопросы