now - set date javascript
Encuentra todos los días en un mes con el objeto Date? (5)
¿Hay alguna forma de tener todos los días de un mes o un año? Estoy buscando esto para desactivar algunos días específicos en un datepicker, tendría una página en el back-office para seleccionar estos días para deshabilitar.
Por lo tanto, necesitaría mostrar todos los días en un mes y agregar un botón "activar o desactivar" a continuación cada día. ¿Hay alguna forma de encontrar estos días con el objeto Date? Encontré este enlace, por ejemplo: mostrando todos los días de un mes pero realmente no lo entiendo, además de que es Java, estoy tratando de encontrar una solución en javascript.
Gracias por tu ayuda
Aquí hay un loopp que se ejecuta cada mes para determinar el último día de ese mes. El objeto Fecha de Javascript indexa los meses que comienzan en cero y si establece el día en cero, vuelve al último día del mes anterior. Útil para determinar el año bisiesto el último día de febrero
Date( 2012, 12, 0)
volverá el 31 de diciembre de 2012
Date (2012,0,0)
volverá el 31 de diciembre de 2011
y el todo importante para descubrir es febrero con
Date ( 2012,3,0)
Devuelve el 29 de febrero desde año bisiesto este año
var mos=[''jan'',''feb'',''mar'',''apr'',''may'',''jun'',''jul'',''aug'',''sep'',''oct'',''nov'',''dec'']
for (i = 0; i < 12; i++) {
var lastDate = new Date(2012, i+1, 0);
$(''body'').append(''Last day of '' + mos[i] + '' is '' + lastDate.getDate()+''<br>'')
}
No estoy seguro de su descripción si el datepicker de fechas de desactivación estándar funcionará con usted, por lo que le responderé su pregunta directamente.
Puede construir una serie de días por un mes con bastante facilidad haciendo esto:
var numOfDays = new Date(2012, 10, 0).getDate(); //use 0 here and the actual month
var days = new Array();
//This will construct an array with all the elements represent the day of the week
//(i.e. Oct 30th would be days[30-1] or days[29]) and the value would be the actual
//day of the week (i.e. Tuesday which is representing by the number 2)
for(var i=0;i<=numOfDays;i++)
{
days[i] = new Date(2012,9,i+1).getDay(); //use month-1 here
}
//This will give you a number from 0 - 6 which represents (Sunday - Saturday)
alert(days[29]);
Usando ese conjunto de días, puedes hacer prácticamente lo que quieras con él y saber también el día de la semana.
Implementé la funcionalidad que solicitó utilizando un jQuery datepicker.
Primero, agregue todas las fechas seleccionadas en el back office para deshabilitarlas en una matriz
// format yyyy-mm-dd
var disabledDates = [
"2012-10-01",
"2012-10-02",
"2012-10-30",
"2012-09-12"
];
En segundo lugar, especifique el selector de fecha con dos funciones
$("#datepicker").datepicker({
// only enable date if dateEnabled returns [true]
beforeShowDay: dateEnabled,
// once a date has been selected call dateSelected
onSelect: dateSelected
});
Aquí está la definición de las funciones requeridas
function dateEnabled( d ) {
// if date found in array disable date
if( disabledDates.indexOf( getDate( d ) ) > -1 ) {
return [false];
} else {
return [true] ;
}
}
Convierta la fecha en una cadena para compararla con las fechas en una matriz
function getDate( d ) {
var day,
month,
year;
day = d.getDate( );
month = d.getMonth( ) + 1; // add 1 as getMonth returns 0 - 11
year = d.getFullYear( );
if( month < 10 ) month = "0" + month;
if( day < 10 ) day = "0" + day;
return year + "-" + month + "-" + day;
}
Una vez que se ha seleccionado una fecha, procese
function dateSelected( d ) {
// do stuff with string representation of date
}
Aquí hay un violín http://jsfiddle.net/KYzaR/7/
Solo pensé que sería útil mencionar que Array.indexOf es una adición reciente al estándar ECMA-262 y, por lo tanto, en el caso de IE7 e IE8 no es compatible. La siguiente página de MDN proporciona un código que implementa Array.indexOf para estos navegadores https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/indexOf
Para obtener una lista de todos los días del mes, puede comenzar con una Date
el primer día de un mes, aumentar el día hasta que cambie el mes.
/**
* @param {int} The month number, 0 based
* @param {int} The year, not zero based, required to account for leap years
* @return {Date[]} List with date objects for each day of the month
*/
function getDaysInMonth(month, year) {
var date = new Date(year, month, 1);
var days = [];
while (date.getMonth() === month) {
days.push(new Date(date));
date.setDate(date.getDate() + 1);
}
return days;
}
Ejemplo http://jsfiddle.net/kKj8h/1/
Para deshabilitar las fechas en un datepicker, puede usar la respuesta que se describe aquí:
https://.com/a/12061715/48082
Para elegir varias fechas (como en la aplicación de back-office), puede usar este complemento:
http://multidatespickr.sourceforge.net/