2012-01-07 33 views
7

Tengo una fecha en este formato "AAAA/MM/DD". Ahora quiero sacar el día de este formato. ¿Cómo puedo obtenerlo usando javascript o jquery? Una forma es estaObteniendo día a partir de la fecha usando jquery/javascript

$(document).ready(function() { 

var d = new Date(); 

alert(d.getDay()); 
}); 

pero el problema aquí es que la variable D contiene la fecha en este formato

Sat Jan 07 2012 18:16:57 GMT+0200 (FLE Standard Time) 

¿Cómo puedo obtener los días desde la fecha en el formato anterior?


Aquí es cómo mi función parezca

function dayOfWeek(d) { 
      var dayNames = new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Sunday'); 
      var currentDate = Math.round(+new Date(d)/1000); 
      var nData = new Date(currentDate); 
      //alert(nData); 
      //alert(nData.getDay()); 
      //var day = d.split("-")[2]; 
      //var t = day.replace("0",""); 
      //alert(t); 
      return dayNames[nData.getDay()]; 
     } 

Lo que estoy haciendo es que estoy fecha de aprobación en el formato "AAAA-MM-DD" y convierte esa fecha a fecha Unix y luego obtener el día y luego devolver el día como el domingo o el lunes, etc. Pero aquí solo regresa el viernes, lo cual es incorrecto. Cuando cambio el día en la fecha, debe regresar el mismo día en el conjunto.

+0

lea aquí para ver cómo formatear la hora de fecha http://stackoverflow.com/questions/4802190/how-do-i-format-date-in-jquery-datetimepicker Vea la respuesta de Skilldrick –

+0

Actualicé mi publicación por favor revisalo. Gracias – 2619

+0

ver mi respuesta ... PD: Olvidaste el sábado: P –

Respuesta

5

El Date Object tiene un método toString que da salida a una cadena de fecha UTC en el formato que usted describió. Sin embargo, el Date Object también tiene una serie de otros métodos.

Para obtener el día del mes (1-31) se utiliza el método de getDate:

d = new Date().getDate() ; 

Su cadena de fecha tiene un formato que no va a ser reconocido por el constructor Date cuerdas . Probar esta línea por su valor de retorno:

var nData = new Date(currentDate) ; 

volverá:

"invalid Date" 

Si el formato de fecha (d) es esto,

"dd-mm-yyyy" 

hacer esto,

var a = d.split("-") ; 
var date = new Date(a[2], (a[1] - 1), a[0]) ; 

esto debería neta usted un trabajo DateObject. O utilice el complemento datepicker para jQuery como se describe en este post.


Link to MDN documentation

+0

Por favor, no firme sus publicaciones. –

+0

Después de casi 2 años seguramente has leído http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be-removed-from-posts por ahora ?! Solo escribe la respuesta. :) –

+0

[Los administradores y mods admiten la "solicitud"] (http://stackoverflow.com/questions/8616719/php-ajax-call-not-showing-ie7-or-8#comment-10695989), y [ las preguntas frecuentes básicamente lo convierten en una reglamentación de todos modos] (http://stackoverflow.com/faq#signatures). La parte de "solicitud" de la discusión sobre meta corresponde más al debate sobre si debería haberme molestado en editar su firma. –

0

es el "formato" que están hablando de una cadena normal?

entonces usted puede hacer esto

var theDay = theDate.split("/")[2]; 
+0

Por favor, mira mi publicación actualizada, esto hará que mi pregunta sea más clara. Quiero obtener el día de la semana y luego mostrarlo en domingo, formato de lunes. – 2619

1

En cuanto al nuevo código de actualización:

$(function() 
    { 
$("a").click(function() { 
      var dayNames = new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'); 
      var nData = new Date(); 
      //alert(nData); 
      //alert(nData.getDay()); 
      //var day = d.split("-")[2]; 
      //var t = day.replace("0",""); 
      //alert(t); 
      alert(dayNames[nData.getDay()]); 
     }); 
}); 

el código anterior es un ejemplo. Edite http://jsfiddle.net/qgDHB/ con sus necesidades.

He eliminado algunas líneas que no son necesarias.

2

En lugar de utilizar las conversiones integradas de Fecha a cadena, que dependen de la implementación, y en lugar de codificar la lógica usted mismo, es mejor utilizar una biblioteca adecuada. He aquí una forma sencilla de hacerlo usando Globalize.js:

function dayOfWeek(s) { 
    var d = Globalize.parseDate(s, 'yyyy/M/d'); 
    if(d == null) { 
    return null; 
    } else { 
    return Globalize.format(d, 'dddd'); 
    } 
} 

Esto analizar la entrada en el formato AAAA/MM/DD (con modificaciones obvias si su formato actual es AAAA-MM-DD), más exactamente, de modo que la el año tiene 4 dígitos (aaaa) y el mes (M) y el día (d) pueden estar en 1 o 2 dígitos (use MM y dd en su lugar si desea aplicar 2 dígitos). Luego escribe la fecha para que solo se escriba el día de la semana, como una palabra (dddd). Si la entrada no es del formato especificado, la función devuelve nulo y, por supuesto, debe tener algún control planificado de errores para este caso.

Como bonificación adicional, el código estará listo para la globalización: si alguna vez necesita modificar el código para producir los nombres en otro idioma, solo agrega una invocación de función que establece la configuración regional (idioma) para Globalize.js .

1
var d=new Date(); 
var weekday=new Array(7); 
weekday[0]="Sunday"; 
weekday[1]="Monday"; 
weekday[2]="Tuesday"; 
weekday[3]="Wednesday"; 
weekday[4]="Thursday"; 
weekday[5]="Friday"; 
weekday[6]="Saturday"; 

var n = weekday[d.getDay()]; 

check

0

Inspirado por el Globalise respuesta anterior, aquí es cómo hacerlo en el Sugar.js biblioteca:

<script src="sugar.min.js"></script> 
... 
var test = Date.create(d); 
console.log(test.format("{Weekday}")); 

d puede estar en un montón de diferentes formatos (incluyendo cuerda o segs -desde 1970 o objeto JS Date) y las opciones de formato de salida son igualmente exhaustivas.

Sugar.js es 17.9K minificado y gzip (que incluye todas las otras características que agrega, no solo las cosas de fecha); eso es aproximadamente el doble del tamaño de Moment.js, la alternativa que estaba considerando. Pero Moment.js no tiene el equivalente de los formatos {dow} o {weekday}.

Cuestiones relacionadas