necesito convertir Monthname a entero de ese mes (y quiero evitar una gran declaración de cambio). ¿algunas ideas?¿hay algo en javascript que pueda convertir "agosto" a 8?
Respuesta
Basta con crear una fecha en ese mes, analizar, y usar getMonth()
como esto
function convertMonthNameToNumber(monthName) {
var myDate = new Date(monthName + " 1, 2000");
var monthDigit = myDate.getMonth();
return isNaN(monthDigit) ? 0 : (monthDigit + 1);
}
alert(convertMonthNameToNumber("August")); //returns 8
alert(convertMonthNameToNumber("Augustsss")); //returns 0 (or whatever you change the default too)
alert(convertMonthNameToNumber("Aug")); //returns 8 - Bonus!
alert(convertMonthNameToNumber("AuGust")); //returns 8 - Casing is irrelevant!
Puede crear una matriz (pares nombre/vale) en su código ya que solo son 12 meses y escribir una función para hacerlo.
var months = {August: 8};
var monthtbl = { 'January': 1, 'February': 2, /* ... */, 'August', 8, /* ... */, 'December': 12 };
// ...
var monthNumber = monthtbl[monthName];
edición pero hacerlo de la manera @Chad sugiere :-)
Si desea que sea insensible a la caja alfabética, debe crear el objeto ("monthtbl") en minúsculas y luego usar
var monthNumber = monthtbl[monthName.toLowerCase()];
+1 ¡Ese es el enfoque! – Achilles
Esto es sólido. Fuera de interés: ¿cómo haría que este caso no sea sensible? En caso de que necesite analizar una entrada del usuario? –
FWIW, esto obviamente será más rápido si lo haces muchas veces. –
Otra opción sólo para tirar por ahí, se puede utilizar una matriz y $.inArry()
, así:
var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
function getMonth(name) {
return $.inArray(name, months) +1;
}
Aunque a juzgar por sus preguntas anteriores, tirando de la fecha directamente desde el objeto jQuery UI selector de fecha mayo ser mucho más fácil.
function monthToNumber(month) {
return new Date(Date.parse("1 "+month)).getMonth()+1;
}
aquí valor contiene el valor del nombre del mes
var month1 = value;
month1 = month1.toLowerCase();
var months = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ];
month1 = months.indexOf(month1);
Por favor explique su respuesta brevemente para que sea más útil para OP y otros lectores. –
- 1. ¿Hay algo como Solr o Elasticsearch que solo se pueda usar en el cliente en Javascript?
- 2. ¿Hay algo que no pueda hacer con el bigote?
- 3. ¿Hay algo que la composición no pueda lograr que la herencia pueda?
- 4. ¿hay algún compilador que pueda convertir expresiones regulares a fsm? o podría convertirse a palabras humanas?
- 5. ¿Cómo convertir código de notación unicode javascript a utf-8?
- 6. Convertir GB2312 a UTF-8
- 7. ¿Hay alguna herramienta que pueda incorporar CSS?
- 8. ¿Hay algún programa que pueda ayudar a entender otro programa?
- 9. ¿Hay algún método que pueda anular en un objeto JavaScript para controlar lo que muestra console.log?
- 10. ¿Hay una biblioteca que pueda compilar C++ o C
- 11. ¿Existe algo similar a gsub en javascript?
- 12. ¿Hay algo similar a WebClient.DownloadString en Java?
- 13. Algo similar a java.util en Javascript?
- 14. ¿Hay algún método que pueda sobrecargar para manejar propiedades indefinidas en JavaScript?
- 15. convertir html a javascript
- 16. Cómo convertir de HTML a UTF-8 en java
- 17. javascript, espera a que algo sea cierto, ejecuta la acción
- 18. convertir HTML (que tiene Javascript) a PDF usando JavaScript
- 19. ¿Hay algo así como un desminificador de javascript (deobfuscator)?
- 20. Cómo convertir caracteres especiales a UTF-8?
- 21. ¿Hay algo más importante que! Important en css?
- 22. Convertir EAN-8 a EAN-13
- 23. ¿Hay algo así como PHP preg_replace_callback() en javascript?
- 24. ¿Hay alguna forma en que pueda hacer dos lecturas atómicas?
- 25. Cómo convertir UTF-8 a US-Ascii en Java
- 26. ¿hay algo así como isset de php en javascript/jQuery?
- 27. ¿Hay algo más grande que ninguno?
- 28. ¿Hay una instrucción shift y copy cpu a la que se pueda acceder desde C#?
- 29. ¿Hay algún módulo Perl que me impida agregar `o morir` a cualquier cosa que pueda fallar?
- 30. Cómo convertir caracteres codificados \ xXY a UTF-8 en Python?
¡Es una buena idea! – Pointy
Me gusta esto. Para completar, ¿qué pasará si paso un mes inválido (como "ugun")? –
Vale la pena mencionar que * Date.parse() * devuelve un número que representa la fecha, no un objeto de fecha real. Además * getMonth() * devolverá * 7 *, no * 8 * porque los meses están basados en cero. –