0 votos

Hola. Primero gracias por existir.

Trato de hacer una aplicacion para mi trabajo, lo hago a turnos con esta cadencia - TLTTLLLL-.La idea es de hace un año con cero conocimientos de java y cero de android. La vista calendario no es mia. Para saber los dias de trabajo creo un metodo :

public List<String>  diasdeTrabajo(){
	 	    
	 		int GUARDIACUATRO1 =16071;
	 		SimpleDateFormat formato = new SimpleDateFormat("dd-MM-yyyy");
	 	 Calendar cal = GregorianCalendar.getInstance();
	      Date date = null;
	 		 
	 	  for (int i=0; i< dias.size() ; i++){ 
	 			 try {
					 date = formato.parse(dias.get(i)); 
				} catch (ParseException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} 
	 			cal.setTime(date);
	 			Long dia= cal.getTimeInMillis();
	 			dia = dia/(1000*60*60*24);
	 			 dia =dia-GUARDIACUATRO1 ;
	 			 int seg2 = (int) (dia % 8);
	 			    if(seg2 ==1 || seg2 == 3|| seg2== 4){
	 			 	 list.add(dias.get(i)+"-CURRO"); 
	 			    }else{  
	 			   list.add(dias.get(i)+"-WHITE");
	 				 }
	 		 }
	 	 	    return list;
                    }

Le paso los "dias" del mes en formato ddMMyy. y me deuelve "list" con los que trabajo y no. Los que trabajo los pongo en rojo. Bueno pues me hace correcto el mes de enero, febrero,abril, junio, agosto, septiembre y noviembre. Marzo lo adelanta tres dias el resultado y mayo julio, octubre y diciembre lo hace un dia.

No entiendo que pasa. Puedo pensar que es con los dias de los meses (30, 31, 28), pero no se solucionarlo.

la cte GUARDIACUATRO son los dias entre 1de enero de 2014 y el 1 de enero de 1970.

No se si se puede enviar archivos adjuntos. Pero les dejo un enlace con el rar del proyecto solo con la vista y el metodo: https://www.dropbox.com/s/5s7qur50duwaupm/MyCalendarActivity.zip?dl=0.

Por favor me podria indicar alguna linea para poder seguir.

Repito de todos modos muchas gracias por compartir conocimientos de forma tan clara y util.

Un saludo

por en Android

1 Respuesta

0 votos
Mejor respuesta
He estado mirando tu código y veo bien el código.

Pienso que puedes tener un problema con los decimales en el cálculo del día.

Supondré que "dias" viene en el formato "dd-MM-yyyy", por ejemplo "31-12-2015". Para esa fecha, si sigo la fórmula que me has puesto:

dia = 1451516400000/86400000 = 16799,9583

Tendrías que redondear el día antes de realizar el módulo.

Otra cosa que te recomiendo, para iniciar el calendario, en vez de restar GUARDIACUATRO, es mirar este ejemplo de código en: http://developer.android.com/reference/java/util/GregorianCalendar.html

Aunque si te funcionan los tres primeros meses y luego empiezan a salir mal... Lo que miraría sería que me estén llegando esos días en el formato correcto al que le estoy diciendo en SimpleDateFormat(). A ver si te están llegando en formato "MM-dd-yyyy" en vez de "dd-MM-yyyy".
por
seleccionada por

Hola. Gracias por tu rapida contestacion. Voy a insetar varias fotos de emulador. En la primera aparece el mes de enero y en el TextView aparece el array "dias" que opera en el metodo. En el segundo se ve la salida "list". Creo que el formato de entrada es correcto

[Url de las imágenes errónea]

 

Cuando dices que empleas el 15-12-2015 y te da el resultado que indicas, algo funciona mal porque lo incluyo yo y me da otro resultado y al pasarlo a dias si me da justo.He hecho las modificaciones y comentado las lineas oprtunas, aunque realmente no existiria el mes 12 (o-11) pero no afecta para el calculo, el metodo quedaria asi:

public Long  diasdeTrabajo(){

      

  int GUARDIACUATRO1 =16071;

  SimpleDateFormat formato = new SimpleDateFormat("dd-MM-yyyy");

   Calendar cal = GregorianCalendar.getInstance();

      Date date = null;

   

    for (int i=0; i< dias.size() ; i++){ 

   try {

// date = formato.parse(dias.get(i)); 

 date = formato.parse("31-12-2015");

} catch (ParseException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

   

  cal.setTime(date);

   dia= cal.getTimeInMillis();

  //dia = dia/(1000*60*60*24);

  // dia =dia-GUARDIACUATRO1 ;

   int seg2 = (int) (dia % 8);

      if(seg2 ==1 || seg2 == 3|| seg2== 4){

     list.add(dias.get(i)+"-CURRO"); 

      }else{  

     list.add(dias.get(i)+"-WHITE");

   }

   }

       // return dias;

         return dia;

                    }

 

 

Le voy a poner los meses de febrero(bien y marzo (mal) y los circulos rojos donde tendria que trabajar . Lo que no entiendo es la salida de list que mantiene el error

 

Hola de nuevo. Me estoy haciendo un lio con los reenvios de respuestas.....

Bien he estado investigando mas y cada vez entiendo menos. Introduzco en el metodo el 28-1-2015 es decir el 28 de febrero y me da una diferencia de dias de 292 que en el modulo da 0 es decir libre de trabajo.

Luego introduzco el 1-01-2015, es decir un dia mas y el resultado es 296 cuatro mas y claro esta el modulo da 4 trabajo.

Introduzco el 3-01-2015 en teoria mi siguiente dia de trabajo y el resultado es 298 ( el valido seria 295).

Es decir la entrada y salida de los arrays es correcto pero el calculo lo hace mal. Del 28 de febrero no pasa a uno de marzo, para el existe el 29,30,31. Por eso un salto de un dia real son cuatro para el gregorianCalendar-

lLo mismo ocurre en el siguiente mes que sale mal:

El 30 de abril 30-03-2015 son 453 modulo 5 no trabajo.

El 1 de mayo 01-04-2015  el dia siguiente.... pues no el resultado es 455 dos mas.

Ya no se como seguir.

La referencia que me da :http://developer.android.com/reference/java/util/GregorianCalendar.html, lo he estado mirando y no se como aprovecharlo.

Gracias de nuevo.

Es un poco raro. Puede que te esté tomando el máximo del mes de la fecha actual (estamos en Enero que tiene 31 días). Por ello se te desplaza Febrero 3 días más de los 28 que tiene. Limpia el calendario con clear() después de obtener la instancia del calendario, es decir pon:

GregorianCalendar cal = GregorianCalendar.getInstance();
cal.clear();

Y ya luego el resto.

Hola de nuevo-

He introducido en el metodo el codigo que me indicas y el resultado es el mismo. No funciona.

Es como si el calculo y lo que aparece en pantalla hubiese un mes de diferencia.No se si influira como instancian el la app los calendarios. En el onCreate lo hace asi:

_calendar = Calendar.getInstance(Locale.getDefault());
		month = _calendar.get(Calendar.MONTH)+1  ;
		year = _calendar.get(Calendar.YEAR);

Luego para controlar el paso del mes anterior y posterior mediante botones introduce este codigo;

private void setGridCellAdapterToDate(int month, int year) {
		adapter = new GridCellAdapter(getApplicationContext(),
				R.id.calendar_day_gridcell, month, year);
		_calendar.set(year, month-1 , _calendar.get(Calendar.DAY_OF_MONTH));
		currentMonth.setText(DateFormat.format(dateTemplate,
				_calendar.getTime()));
		adapter.notifyDataSetChanged();
		calendarView.setAdapter(adapter);
		 
	}

	@Override
	public void onClick(View v) {
		if (v == prevMonth) {
			if (month <= 1) {
				month = 12;
				year--;
			} else {
				month--;
			}
			Log.d(tag, "Setting Prev Month in GridCellAdapter: " + "Month: "
					+ month + " Year: " + year);
			setGridCellAdapterToDate(month, year);
		}
		if (v == nextMonth) {
			if (month > 11) {
				month = 1;
				year++;
			} else {
				month++;
			}
			Log.d(tag, "Setting Next Month in GridCellAdapter: " + "Month: "
					+ month + " Year: " + year);
			setGridCellAdapterToDate(month, year);
		}

	}

Y en la clase que extiende el baseadapter en el constructor:

Calendar calendar = Calendar.getInstance();
			setCurrentDayOfMonth(calendar.get(Calendar.DAY_OF_MONTH));
			setCurrentWeekDay(calendar.get(Calendar.DAY_OF_WEEK));

Y luego en el metodo donde creo que construye el calendario tambien instancia otro calendar. Se lo pongo entero, de aqui cojo yo el array "dias" del mes:

private void printMonth(int mm, int yy) {
			Log.d(tag, "==> printMonth: mm: " + mm + " " + "yy: " + yy);
			int trailingSpaces = 0;
			int daysInPrevMonth = 0;
			int prevMonth = 0;
			int prevYear = 0;
			int nextMonth = 0;
			int nextYear = 0;

			int currentMonth = mm-1  ;
			String currentMonthName = getMonthAsString(currentMonth);
			daysInMonth = getNumberOfDaysOfMonth(currentMonth);

			Log.d(tag, "Current Month: " + " " + currentMonthName + " having "
					+ daysInMonth + " days.");

			 GregorianCalendar cal = new GregorianCalendar(yy, currentMonth,0);
			Log.d(tag, "Gregorian Calendar:= " + cal.getTime().toString());

			if (currentMonth == 11) {
				prevMonth = currentMonth - 1;
				daysInPrevMonth = getNumberOfDaysOfMonth(prevMonth);
				nextMonth = 0;
				prevYear = yy;
				nextYear = yy + 1;
				Log.d(tag, "*->PrevYear: " + prevYear + " PrevMonth:"
						+ prevMonth + " NextMonth: " + nextMonth
						+ " NextYear: " + nextYear);
			} else if (currentMonth == 0) {
				prevMonth = 11;
				prevYear = yy - 1;
				nextYear = yy;
				daysInPrevMonth = getNumberOfDaysOfMonth(prevMonth);
				nextMonth = 1;
				Log.d(tag, "**--> PrevYear: " + prevYear + " PrevMonth:"
						+ prevMonth + " NextMonth: " + nextMonth
						+ " NextYear: " + nextYear);
			} else {
				prevMonth = currentMonth - 1;
				nextMonth = currentMonth + 1;
				nextYear = yy;
				prevYear = yy;
				daysInPrevMonth = getNumberOfDaysOfMonth(prevMonth);
				Log.d(tag, "***---> PrevYear: " + prevYear + " PrevMonth:"
						+ prevMonth + " NextMonth: " + nextMonth
						+ " NextYear: " + nextYear);
			}

			int currentWeekDay = cal.get(Calendar.DAY_OF_WEEK) - 1;
			trailingSpaces = currentWeekDay;

			Log.d(tag, "Week Day:" + currentWeekDay + " is "
					+ getWeekDayAsString(currentWeekDay));
			Log.d(tag, "No. Trailing space to Add: " + trailingSpaces);
			Log.d(tag, "No. of Days in Previous Month: " + daysInPrevMonth);

			if (cal.isLeapYear(cal.get(Calendar.YEAR)))
				if (mm == 2)
					++daysInMonth;
				else if (mm == 3)
					++daysInPrevMonth;

			// Trailing Month days
			for (int i = 0; i < trailingSpaces; i++) {
				Log.d(tag,
						"PREV MONTH:= "
								+ prevMonth
								+ " => "
								+ getMonthAsString(prevMonth)
								+ " "
								+ String.valueOf((daysInPrevMonth
										- trailingSpaces + DAY_OFFSET)
										+ i));
		 	list.add(String
						.valueOf((daysInPrevMonth - trailingSpaces + DAY_OFFSET)
								+ i)+ "-"
						+ getMonthAsString(prevMonth)
						+ "-"
						+ prevYear+ "-GREY" ); 
			}

			// Current Month Days
			for (int i =1; i <= daysInMonth; i++) {
				Log.d(currentMonthName, String.valueOf(i) + " "
						+ getMonthAsString(currentMonth) + " " + yy);
				     dias.add(String.valueOf(i)+"-"+getMonthAsString(currentMonth )+ "-"+yy );
				     
			
			}
			
			//if(getMonthAsString(currentMonth) !=null){
			   diasdeTrabajo();
			 
			//} 	  
			 /*	       if (i == getCurrentDayOfMonth()) {
				 	 list.add(String.valueOf(i)  + "-"+ getMonthAsString(currentMonth) + "-" + yy+"-BLUE");//
				   }  else {
				 	list.add(String.valueOf(i)  + "-"+ getMonthAsString(currentMonth) + "-" + yy+"-WHITE" );//+"-WHITE"
			 	}*/
			 	  	
			 	     
			 	     
		 

			// Leading Month days
			for (int i = 0; i < list.size() % 7; i++) {
				Log.d(tag, "NEXT MONTH:= " + getMonthAsString(nextMonth));
				 list.add(String.valueOf(i + 1) + "-"
						+ getMonthAsString(nextMonth) + "-" + nextYear+"-GREY"  ); 
			}
			
		}

Gracias de nuevo. Un saludo

Podría dar problemas al obtener la instancia con getInstance(), que ya traiga alguna configuración extraña (si es así habría que revisar el código, pues puede que el calendario también de problemas). Prueba a crear una instancia nueva de GregorianCalendar (tienes un ejemplo en http://developer.android.com/reference/java/util/GregorianCalendar.html)

Hola Ramon.

Lo que me indicas que haga creo que es 

public List<String>  diasdeTrabajo(){
	 	    
	 		int GUARDIACUATRO1 =16071;
	 		SimpleDateFormat formato = new SimpleDateFormat("dd-MM-yyyy");
	 		GregorianCalendar cal = new GregorianCalendar();
	// Calendar cal =   GregorianCalendar.getInstance();
	 	 cal.clear();
	      Date date = null;
	 		 
	 	  for (int i=0; i< dias.size() ; i++){ 
	 			 try {
					  date = formato.parse(dias.get(i)); 
					  
				} catch (ParseException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
	 			 
	 			cal.setTime(date);
	 			 dia= cal.getTimeInMillis();
	 		     dia = dia/(1000*60*60*24);
	 			 dia =dia-GUARDIACUATRO1 ;
	 			 int seg2 = (int) (dia % 8);
	 			    if(seg2 ==1 || seg2 == 3|| seg2== 4){
	 			 	 list.add(dias.get(i)+"-CURRO"); 
	 			    }else{  
	 			   list.add(dias.get(i)+"-WHITE");
	 				 }
	 		 }
	 	 	    return dias;
	 	       
                    }

El resultado es el mismo. Desesperado.

Gracias

Sí, era eso. Bueno, no desesperemos que si yo te contara... te aseguro que acabará saliendo de alguna manera ;)

Lo mejor que puedes hacer es depurar el programa por pasos, acotando. Puedes empezar con este método a ver si hubiera suerte, y hacer que el GregorianCalendar te devuelva un año entero, mirar si lo está devolviendo bien (los días y meses). Si no lo hace, ya tendríamos que tirar más atrás y hacer lo mismo donde se esté utilizando.

Otra opción es buscar una biblioteca de calendarios y utilizarla, aunque requiere reescribir buena parte del código, bien puede simplificarte los cálculos también.
Hola. Gracias por estar tan pendiente.

Si te etiendo bies quieres que con ese calendario instanciado me devuelva un año entero y ver si lo hace bien. Voy a ver como lo hago.

Lo de depurar no tengo ni idea. No se como se hace

Y la otra opcion la estoy barajando pero no se como conseguir lo que me indicas. Lo de sobreescribir no hay problema estoy aprendiendo.

Tenga en cuenta que mis conocimientos en android se los debo a gente como Usted que crean tutoriales para ponerlo todo mas facil.

Gracias de nuevo.
Depurar, aunque indica utilizar el depurador, no es necesario (el depurador es el icono del escarabajo). Con montar un entorno de pruebas donde podamos ver lo que ocurre y donde ocurre para poder remediarlo nos vale. Aunque el depurador en sí te da mucha más información, sin tener que estar escribiendo Logs.

Hola Ramon.

En el metodo diasdeTrabajo(), he comentado casi todo y he colocado estas lineas:

GregorianCalendar cal = new GregorianCalendar();
	 		  int hoy = cal.get(Calendar.DAY_OF_WEEK);

Para que me debuelva "hoy". Supuestamenta asi me tendria que salir miercoles es decir 4; pues me sale 4 es decir bien. Y asi todos los dias que he metido, que han sido varios.

Lo he realizado tambien con el cal.getTime();y el resultado es correcto.

Mas perdido que antes.

Si sale bien significa que posiblemente lo que está mal es el planteamiento posterior. Puede que haya alguna fórmula que no esté cumpliendo su cometido.

Creo que podría ser la variable de GUARDIACUATRO1, que estés quitando información necesaria. Haz los cálculos para los días laborables con todo el calendario. Luego ya se verá cuando las cosas nos empiecen a funcionar.

Hola Ramon.

He cambiado el metodo sustituyendo la constante, creo que lo he hecho bien. Si quero que la fecha sea el 1 de enero de 2014, la variable diaa es 1??, o tendria que ser 0.

Bien le dejo lo que he hecho:

public List<String>  diasdeTrabajo(){
	 	    
	 		int GUARDIACUATRO1 =16071;
	 		SimpleDateFormat formato = new SimpleDateFormat("dd-MM-yyyy");
	 		  GregorianCalendar cal = new GregorianCalendar();
	 		 int año = 2014; 
	 		 int mes = 00; 
	 		 int diaa = 01; //  
	 		Calendar calendar = new GregorianCalendar(año, mes, diaa); 
	 		 fecha = calendar.getTimeInMillis();
	 		
	     Date date = null;
	 		 
	 	  for (int i=0; i< dias.size() ; i++){ 
	 			 try {
					  date = formato.parse(dias.get(i)); 
					  
				} catch (ParseException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
	 			 
	 			cal.setTime(date);
	 			 dia= cal.getTimeInMillis();
	 		   // dia = dia/(1000*60*60*24);
	 			 dia =dia-fecha;
	 			 dia=dia/(1000*60*60*24);
	 			 int seg2 = (int) (dia % 8);
	 			    if(seg2 ==1 || seg2 == 3|| seg2== 4){
	 			 	 list.add(dias.get(i)+"-CURRO"); 
	 			    }else{  
	 			   list.add(dias.get(i)+"-WHITE");
	 				 }
	 		 }
	 	 	     return dias; 
	 	      
                    }
 	

El resultado no ha variado, el mismo que antes. Y ahora.....

Gracias.

Cuando pasan estas cosas lo mejor es que crees un programa Java en blanco con la función única y exclusivamente; y reproduzcas las condiciones de entrada. Muestra por consola el resultado, además aceleramos mucho las pruebas de este modo.
Hola Ramon.

Entiendo lo que me pide, pero lo que no se como hacer es introducir en el metodo la variable "dias" es decir los dias del mes en curso o en pantalla , adema en formato "dd-MM-yy".

No sabria como hacerlo.

Hola Ramon.

Bien no he tenido mucho tiempo, pero he hecho lo que me indicabas. Lo que era la variable "dias" que eran los del mes en curso en formato "dd-MM-yyyy", lo he sustituido por un String con el mismo formato pero con introduccion manual. El codigo del metodo es:

public static void main(String[] args) throws ParseException {
		// TODO Auto-generated method stub
		SimpleDateFormat formato = new SimpleDateFormat("dd-MM-yyyy");
 	 GregorianCalendar cal = new GregorianCalendar();
 		  
 		 int año = 2014; 
 		 int mes = 00; 
 		 int diaa = 01; //  
 		Calendar calendar = new GregorianCalendar(año,mes,diaa); 
 		 long fecha = calendar.getTimeInMillis();
 		String dias = "29-03-2015";
         Date date = null;
 		 date = formato.parse(dias ); 
		  cal.setTime(date);
 		  long dia = cal.getTimeInMillis();
 			 dia =dia-fecha;
 			 dia=dia/(1000*60*60*24);
 			 int seg2 = (int) (dia % 8);
 			    if(seg2 ==1 || seg2 == 3|| seg2== 4){
 			 	System.out.print("Trabajo el:"+ dia);
 			    }else{  
 			  System.out.print("No trabajo el dia:"+ dia);
 				 }
	}
}

Tal como lo tengo el resultada es el mismo. Los mismos fallos es mas cuando introduzco el "29-03-2015" me da 452 y trabajo. Pero al meter "30-03-2015" me da tambien 452 y obviamente trabajo.

Luego hice la prueba de 28 de febrero es decir "28-01-2015" me da 392 y no trabajo.

Meto el dia siguiente 01-02-2015 y me da 396 y trabajo. Es decir que el "01" no es febrero sino un mes de 31 dias porque cuenta el 29,30,31.

Luego el 31-02-2015   me da 426 y el 01-03-2015  me da 424 dos dias menos

El formato para los dias a estudiar es el indicado pero a la hora de instanciar el calendario de la fecha de origen del calculo "calendar" tiene que ser "yyyy-MM-dd" porque si lo cambio y el set lo pongo como dias, mes, año me salen datos elevadisimo por lo que deduzco que esta mal. He cambiado el format y el resultado es el mismo.

Es decir un desastre.Que hago mal.

Gracias

Hola Ramon.

A pesar del tiempo pasado no he olvidado mi proyecto, lo que pasa es que lo puedo dedicar  muy poco tiempo. El problema al parecer era de compilacion. Me aconsejaron utilizar la clase LocalDate de java.Time de java 8. Bien he probado con esta clase y si es cierto que el problema se soluciona El metodo quedaria compilado solamente en java asi:

public class Calendario {

	/**
	 * @param args
	 * @throws ParseException 
	 */
	public static void main(String[] args) throws ParseException {
		// TODO Auto-generated method stub
		
		   dameCalendario("-01-2015");
	       // dameCalendario("2015-02-");
	        dameCalendario("-03-2015");
	       // dameCalendario("2015-04-");
	        dameCalendario("-05-2015");
	        dameCalendario("-07-2015");
	        
	}
	        
	        public static void dameCalendario(String mesYaño) throws ParseException {
	 
 		  
 		  
 		 LocalDate hoy = LocalDate.now();
 		 LocalDate inicio = LocalDate.of(2014, Month.FEBRUARY,1);
 		//DateTimeFormatter fmt = DateTimeFormatter
		        //.ofLocalizedDate(FormatStyle.SHORT);
 		//		.ofPattern("dd-MM-yyyy");
 		//fmt.format(inicio);
 		LocalDate inicio2 = LocalDate.parse("2014-02-01");
 	//	 DateTimeFormatter fmtinicio = DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT);
 	//	 fmtinicio.format(inicio2);
 		 
 		String dias= "";
 	 
 		  for (int i=1; i<=31;i++) {
          
 	 	  if(i<10){
		 	 dias ="0"+i+mesYaño;		
 		 	  }else{
 		 		  dias= i+mesYaño;
 	 	  }
			DateTimeFormatter dtf=DateTimeFormatter.ofPattern("dd-MM-uuuu");
			LocalDate diasdeTrabajo= LocalDate.parse(dias, dtf);
 	       //    LocalDate diatrabajo = LocalDate.parse(dias);
 	       //   DateTimeFormatter fmtfinal = DateTimeFormatter
 	 		        //.ofLocalizedDate(FormatStyle.MEDIUM);
 	        	//	  .ofPattern("dd-MM-yyyy");
 	         // fmtfinal.format(diatrabajo);
 	        
 	         long dia = ChronoUnit.DAYS.between(inicio2,diasdeTrabajo);
 	       
 	          
 	            System.out.print(" Ahora dia vale: "+dia+" " + dias);
 	            int seg2 =  (int) (dia % 8);
 	            System.out.print(" El resto de dia entre 8 es: "+ seg2 + "   .    ");
 	            if(seg2 ==1 || seg2 == 3|| seg2== 4){
 	                System.out.println("T-Trabajo el dia:"+dias );
 	               
 	            }else{  
 	                System.out.println("L-Libre el dia:"+ dias );
 	                     
 	            }
 	        }
	} 
	        
}

Bien el problema lo tengo cuando trato de pasar esto a eclipse y en mi proyecto. No se que tuve que hacer para que me apareciese los import de java.Time. y luego cuando lo consigo me da un error de "NoClassDeFoundError".

Por favor como puedo preparar eclipse para que esto no me pase?. Con el android estudio seria mas facil.

Gracias por todo.

Tanto tiempo que ya daba por hecho que lo hubieras solucionado. No pasa nada, seguimos buscando alguna solución.

LocalDate es una biblioteca que pertenece Java 8, que soluciona muchos de los errores que tenían las bibliotecas anteriores y es más fácil de utilizar. Android solo soporta Java 7 que no incorpora esta biblioteca, por lo que no se puede usar LocalDate.

Prueba la biblioteca externa joda-time http://www.joda.org/joda-time/

Hola Ramon .

Por fin  lo he solucionado.Ha sido mucho tiempo ,aunque no lo puedo dedicar muchas horas a la semana. Son demasiados aspectos que no conozco y cada problema con codigo o lo mas preocupante con eclipse, me lleva mucho el poder resolverlo. Menos mal que siempre se encuentras almas caricativas que con una estimablse y desinteresada ayuda,lograis orientar para resolver los inconvenientes.

Al final el metodo me quedo asi:

public List<String> diasdeTrabajo() {
	         
			 LocalDate hoy =LocalDate.now();
			 LocalDate inicio = LocalDate.parse("2014-02-01");
			 
            
			for (int i = 0; i < dias.size(); i++) {
				String[] dateArr =  dias.get(i).split("-"); // date format is yyyy-mm-dd
				 String diaa = dateArr[0];
				 String mes =  dateArr[1] ;
			    String año = dateArr[2];
			int mess=    Integer.parseInt(dateArr[1])+1;
			String messs = String.valueOf(mess);
				 String diac = diaa+"-"+ messs +"-"+año;
				
				
				
				 DateTimeFormatter dtf = DateTimeFormat.forPattern("dd-MM-yyyy");
                 LocalDate diasdeTrabajo =LocalDate.parse(diac, dtf);
                 Days dia = Days.daysBetween(inicio, diasdeTrabajo);
                 int days = dia.getDays(); 
	    

				int seg2 = days % 8;
				if (seg2 == 1 || seg2 == 3 || seg2 == 4) {
					list.add(dias.get(i) + "-CURRO");

				} else {
					list.add(dias.get(i) + "-WHITE");

				}
			}
			return dias;

		}

Seguramente en los siguientes pasos que tengo que acometer necesitare ayuda, porque tendre que realizar o trabajar con clases, apis....que para mi seran la primera vez. Pero siempre tendre la sensacion de que no estoy solo.

Lo dicho Ramon muchas gracias por existir.

Gracias.

De nada. Todo lo que podamos ayudar lo haremos.

Me alegro que encontraras la solución, siempre se termina encontrando aunque se tarde un poco :)