2010-06-25 19 views
9

tengo el siguiente códigoFecha Reino Unido

datePicker.change(function(){ 
     dateSet = datePicker.val(); 
     dateMinimum = dateChange(); 
     dateSetD = new Date(dateSet); 
     dateMinimumD = new Date(dateMinimum); 
     if(dateSetD<dateMinimumD){ 
      datePicker.val(dateMinimum); 
      alert('You can not amend down due dates'); 
     }  
    }) 

dateSet = "01/07/2010" dateMinimum = "23/7/2010"

formato Ambos son Reino Unido. Cuando se comparan los objetos de fecha, DateSetD debe ser menor que dateMinimumD pero no lo es. Creo que tiene que ver con los hechos. Estoy usando las fechas de Reino Unido dd/mm/aaaa. ¿Qué necesitaría cambiar para que esto funcione?

+3

Las fechas en el Reino Unido son "dd/MM/yyyy" no "mm/dd/aaaa". – ChrisF

+0

Ha sido uno de esos días. Pregunta actualizada – Linda

Respuesta

11

El constructor JavaScript Date no analiza las cadenas en esa forma (ya sea en formato británico o estadounidense). Ver the spec para los detalles, pero se puede construir el sistema de fechas por parte:

new Date(year, month, day); 

MomentJS podría ser útil para tratar con las fechas de forma flexible. (Esta respuesta anteriormente vinculada a this lib, pero no se ha mantenido en mucho tiempo).

5
  • Dividir la fecha en día, mes, año en piezas utilizando dateSet.split('/')
  • pasar estas piezas en el orden correcto para la Date constructor.
0

Sí, hay un problema con el formato de fecha que está utilizando. Si no está configurando un formato de fecha, la fecha predeterminada que se utiliza es 'mm/dd/yy. Por lo que debe configurar su formato de fecha preferida cuando se crea de la siguiente manera cuando se crea el selector de fechas:

$(".selector").datepicker({ dateFormat: 'dd/mm/yyyy' }); 

o puede establecer más tarde como:

$.datepicker.formatDate('dd/mm/yyyy'); 
0

Cuando intenta crear una fecha objeto:

new Date(year, month, day, hours, minutes, seconds, milliseconds) 

Ejemplo:

dateSetD = new Date(dateSet.year, dateSet.month, dateSet.day); 

Nota: El mes del objeto JavaScript Date comienza con 00, por lo que debe ajustar el conjunto de fechas en consecuencia.

+0

JavaScript no tiene argumentos de palabra clave al estilo de Python. Lo que estás haciendo en el ejemplo es asignar 'dateSet.year' a una variable global accidental' year'! – bobince

12

Esto es como terminé haciéndolo:

var lastRunDateString ='05/04/2012'; \\5th april 2012 
var lastRunDate = new Date(lastRunDateString.split('/')[2], lastRunDateString.split('/')[1] - 1, lastRunDateString.split('/')[0]); 

Nota la indexación mes es de 0-11.

7
var dateString ='23/06/2015'; 
var splitDate = dateString.split('/'); 
var month = splitDate[1] - 1; //Javascript months are 0-11 

var date = new Date(splitDate[2], month, splitDate[0]); 
Cuestiones relacionadas