Obtener el nombre del día
Métodos en DateUtil de la libreria avbravoutils
Devolver una lista
public static List<String> nameDayOfMonth(Integer year, String mes);
Lista con los nombre de los meses
public static List<String> letterDayOfMonth(Integer year, String mes);
Lista con las letras de los meses
public static String firstLetterOfDay(LocalDate date)
Primera letra del mes en base a la fecha
public static String nameOfDay(LocalDate date)
Nombre del día en base a la fecha LocalDate
public static String nameOfDay(Date date)
Nombre del día en base a la fecha Java Date
Ejemplo1: Mostrarlo en un datatable simple. Convertiendo java Date a LocalDate.
Controller
programacionFlotaPojo.setDiaNombre(DateUtil.nameOfDay(v.getFechahorafinreserva()));
Segmento de Código
case "programacionflota":
Bson filter0 = Filters.eq("activo", "si");
viajeList = viajeRepository.filterBetweenDatePaginationWithoutHours(filter0, "fechahorainicioreserva", lookupServices.getFechaDesde(), "fechahorafinreserva", lookupServices.getFechaHasta(), page, rowPage, new Document("idviaje", -1));
if (viajeList == null || viajeList.isEmpty()) {
} else {
for (Viaje v : viajeList) {
ProgramacionFlotaPojo programacionFlotaPojo = new ProgramacionFlotaPojo();
programacionFlotaPojo.setIdprogramacionFlota(v.getIdviaje());
programacionFlotaPojo.setConductor(v.getConductor().getNombre());
programacionFlotaPojo.setDiaNombre(DateUtil.nameOfDay(v.getFechahorafinreserva()));
programacionFlotaPojo.setFecha(v.getFechahorainicioreserva());
programacionFlotaPojo.setHorafin("");
programacionFlotaPojo.setHorainicio("");
// buscar la solicitud con ese viaje para encontrar la mision
programacionFlotaPojo.setMision("");
programacionFlotaPojo.setUnidad("");
programacionFlotaPojo.setVehiculo(v.getVehiculo().getMarca() + " " + v.getVehiculo().getModelo() + " " + v.getVehiculo().getPlaca());
programacionFlotaPojoList.add(programacionFlotaPojo);
}
}
break;
.xhtml
<a:paginatorReport
rowPage="#{viajeReporteController.rowPage}"
first="#{viajeReporteController.first()}"
back="#{viajeReporteController.back()}"
next="#{viajeReporteController.next()}"
last="#{viajeReporteController.last()}"
page="#{viajeReporteController.page}"
pages="#{viajeReporteController.pages}"
skip="ajax:viajeReporteController.skip(viajeReporteController.page)"
printAll="#{viajeReporteController.printAll()}"
/>
<b:dataTable value="#{viajeReporteController.programacionFlotaDataModel}"
var="item"
id="dataTable2"
paginated="false"
onpage="console.log('page');">
<b:dataTableColumn value="#{item.idprogramacionFlota}" label="#{msg['field.idprogramacionFlota']}"
/>
<b:dataTableColumn value="#{item.diaNombre}" label="#{msg['field.diaNombre']}" />
<b:dataTableColumn label="#{msg['field.fecha']}" >
<p:calendar disabled="true" size="8"
pattern="dd/MM/yyyy" value="#{item.fecha}" />
</b:dataTableColumn>
<b:dataTableColumn label="#{msg['field.unidad']}" >
<p:outputLabel value="#{item.unidad}"/>
</b:dataTableColumn>
<b:dataTableColumn label="#{msg['field.mision']}" >
<p:outputLabel value="#{item.mision}"/>
</b:dataTableColumn>
<b:dataTableColumn label="#{msg['field.horainicio']}">
<p:outputLabel value="#{item.horainicio}" />
</b:dataTableColumn>
<b:dataTableColumn label="#{msg['field.horafin']}">
<p:outputLabel value="#{item.horafin}" />
</b:dataTableColumn>
<b:dataTableColumn label="#{msg['field.conductor']}" >
<p:outputLabel value="#{item.conductor}"/>
</b:dataTableColumn>
<b:dataTableColumn label="#{msg['field.vehiculo']}"
>
<p:outputLabel value="#{item.vehiculo}"/>
</b:dataTableColumn>
</b:dataTable>
Generaría
Código .xhtml
<div class="form-group row">
<p:outputLabel class="col-xs-2 col-form-label" value="#{msg['field.anio']}"/>
<div class="col-xs-4">
<p:inputText id="anio" class="fullWidth" value="#{reservadoController.reservado.anio}"
placeholder="#{msg['field.anio']}" maxlength="5"
required="true" requiredMessage="#{msg['field.anio']} #{app['info.required']}"/>
</div>
<p:outputLabel class="col-xs-2 col-form-label" value="#{msg['field.mes']}"/>
<div class="col-xs-4">
<p:selectOneMenu id="mes" value="#{reservadoController.reservado.mes}"
required="true" >
<p:ajax process="mes,dia" event="change"
update=":form:dataTable :form:msgs"
listener="#{reservadoController.changeMes()}"/>
<f:selectItem itemLabel="#{app['selectonemenu.select']}" itemValue="#{null}"/>
<f:selectItem itemLabel="#{app['mes.ene']}" itemValue="enero" />
<f:selectItem itemLabel="#{app['mes.feb']}" itemValue="febrero" />
<f:selectItem itemLabel="#{app['mes.mar']}" itemValue="marzo" />
<f:selectItem itemLabel="#{app['mes.may']}" itemValue="mayo" />
<f:selectItem itemLabel="#{app['mes.jun']}" itemValue="junio" />
<f:selectItem itemLabel="#{app['mes.jul']}" itemValue="julio" />
<f:selectItem itemLabel="#{app['mes.ago']}" itemValue="agosto" />
<f:selectItem itemLabel="#{app['mes.sep']}" itemValue="septiembre" />
<f:selectItem itemLabel="#{app['mes.oct']}" itemValue="octubre" />
<f:selectItem itemLabel="#{app['mes.nov']}" itemValue="noviembre" />
<f:selectItem itemLabel="#{app['mes.dic']}" itemValue="diciembre" />
</p:selectOneMenu>
</div>
</div>
</div>
</div>
CONTROLLER
mesToMonth() devuelve un objeto Month en base al nombre del mes.
luego generamos los dias en un for hasta el limite
el método firstLetterOfDay devuelve la letra del día.
public String changeMes() {
try {
LocalDate date;
Month month = JsfUtil.mesToMonth(reservado.getMes());
for (int i = 1; i <= month.maxLength(); i++) {
date = LocalDate.of(reservado.getAnio(), month, i);
String letra = JsfUtil.firstLetterOfDay(date);
JsfUtil.warningMessage(date + "fue "+letra);
}
} catch (Exception e) {
JsfUtil.errorMessage("changeMes() " + e.getLocalizedMessage());
}
return "";
}
Usando FechaDiaUtils
Controller
Implementar la clase FechaDiaUtils del api jsfUtil, ,la estructura de esta clase es
En el controller solo hay que importar
import com.avbravo.avbravoutils.dates.FechaDiaUtils;
El método JsfUtil.nameOfDayOfDateOfMonth(reservado.getAnio(), reservado.getMes());
devuelve un <FechaDiaUtils>, que contendrá cada día del mes, el nombre y la sigla del día de cada mes.
public String changeMes() { try { cargarDias(); List<FechaDiaUtils> fechaDiaUtilsList = JsfUtil.nameOfDayOfDateOfMonth(reservado.getAnio(), reservado.getMes()); for (FechaDiaUtils fdu : fechaDiaUtilsList) { JsfUtil.warningMessage(fdu.getDate() + "fue " + fdu.getLetter() + " name " + fdu.getName()); } } catch (Exception e) { JsfUtil.errorMessage("changeMes() " + e.getLocalizedMessage()); } return ""; }