parse now new from javascript jquery date datepicker monthcalendar

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>'') }

DEMO: http://jsfiddle.net/5k8sn/1/


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/