2011-01-07 17 views
0

Ich habe eine Array des Datums. Ich möchte herausfinden, wie viele Wochentage in diesem Array sind. Also, wie kann ich das tun java ..Wie finde ich die Anzahl der Wochentage in Array

*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]; 
          } 

hier ist meine CSV-Datei

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

mein Format ist MM/d/JJJJ – Chamal

+0

können Sie ein bisschen Ihre CSV-Datei –

+0

hier posten ich die CSV-Datei – Chamal

Antwort

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

ich sehen, wie sie als Zeichenketten eingelesen, aber du hast nicht Erwähnen Sie das Format der Daten? (Wie zum Beispiel YYYY-MM-DD)

Sie wahrscheinlich die Zeichenfolge in ein Date Objekt analysieren sollte (mit DateFormat), und dass die Zeit eines Calendar Instanz festgelegt verwenden. Mit dem Kalender können Sie leicht den Wochentag ab dem Datum erhalten.

+0

mein Format ist MM/d/JJJJ – Chamal

1

Oder Sie die Joda-Time Bibliothek nutzen könnten.

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

Sie könnten dann eine Vergleichslogik verwenden, um zu prüfen, ob die Zeichenfolge 'Samstag' oder 'Sonntag' ist. Joda-Time API erlaubt Ihnen auch, den Wert als int zu erhalten, was bedeutet, dass Sie nur überprüfen müssen, ob die zurückgegebene Ganzzahl größer als 5 ist (1-Montag ... 7-Sonntag).

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

Hoffe, dass hilft.

Verwandte Themen