{"id":3232,"date":"2014-02-28T09:00:25","date_gmt":"2014-02-28T08:00:25","guid":{"rendered":"https:\/\/blogs.ua.es\/pi\/?p=3232"},"modified":"2013-12-05T07:29:13","modified_gmt":"2013-12-05T06:29:13","slug":"ordenar-fechas-en-javascript","status":"publish","type":"post","link":"https:\/\/blogs.ua.es\/pi\/2014\/02\/28\/ordenar-fechas-en-javascript\/","title":{"rendered":"Ordenar fechas en JavaScript"},"content":{"rendered":"<p>Hace unas semanas, recib\u00ed esta consulta en el curso <a href=\"http:\/\/idesweb.es\/\">iDESWEB<\/a>:<\/p>\n<blockquote><p>Lo que si que me tiene mosca, es lo de ordenar las fechas, si lo haces con sort como los t\u00edtulos y los pa\u00edses te ordena las fechas por d\u00edas, entonces mirando los m\u00e9todos de date vi parse que te devuelve el valor en milisegundos desde el 1 de enero del a\u00f1o 70 o algo as\u00ed, lo prob\u00e9 en un documento a parte con dos fechas en el formato en el que tengo las fechas y me daba dos n\u00fameros diferentes ,con lo que lo puse en el documento HTML y me ordenaba bien los a\u00f1os, pero no entiendo bien porque las fechas del mismo a\u00f1o estaban desordenadas. Adem\u00e1s cuando quite las alertas que me puse antes de cada funci\u00f3n para asegurarme que se ejecutaban correctamente, no se porque ya no me lo ordena ni por a\u00f1os y eso que tire de control z y lo deje igual, pero deb\u00ed de cambiar algo porque ahora no funciona y la consola de firefox no me marca errores de js. Tambi\u00e9n en probado con valueOf y nada tampoco.<\/p><\/blockquote>\n<p>Y esta fue mi respuesta:<\/p>\n<p>Hola.<\/p>\n<p>La funci\u00f3n sort() de JavaScript realiza un ordenaci\u00f3n alfab\u00e9tica. Esa ordenaci\u00f3n no sirve para ordenar fechas, porque una fecha escrita con el formato &#8220;dd\/mm\/aa&#8221; se tiene que ordenar de derecha a izquierda.<\/p>\n<p>Para usar esa funci\u00f3n en la ordenaci\u00f3n de fechas puedes hacer dos cosas:<\/p>\n<ul>\n<li>Puedes escribir la fecha en formato &#8220;aaaa-mm-dd&#8221;, que casualmente (no es casualidad, est\u00e1 hecho por esto mismo) es el formato que se emplea en las bases de datos para almacenar las fechas. De este modo, primero se ordena por el a\u00f1o, despu\u00e9s por el mes y por \u00faltimo por el d\u00eda. Lo que ocurre es que este formato es confuso para mucha gente: lo puedes usar internamente, pero no para mostrar una fecha al usuario.<\/li>\n<li>Puedes suministrar a la funci\u00f3n sort() una funci\u00f3n de callback para realizar la comparaci\u00f3n: esa funci\u00f3n, que debes escribir, realiza la comparaci\u00f3n de dos fechas.<\/li>\n<\/ul>\n<p>Pasar la fecha al n\u00famero de segundos o milisegundos podr\u00eda ser una soluci\u00f3n&#8230; pero no lo es, porque sort() realiza una ordenaci\u00f3n alfab\u00e9tica, no num\u00e9rica: tampoco sirve para ordenar n\u00fameros. Prueba lo siguiente:<\/p>\n<pre>var a = [2, 20, 19, 1, 10, 111, 200, 9, 99];\r\na.sort();<\/pre>\n<p>El resultado es:<\/p>\n<pre>[1, 10, 111, 19, 2, 20, 200, 9, 99]<\/pre>\n<p>\u00bfEst\u00e1 ordenado?<br \/>\nUn saludo.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hace unas semanas, recib\u00ed esta consulta en el curso iDESWEB: Lo que si que me tiene mosca, es lo de ordenar las fechas, si lo haces con sort como los t\u00edtulos y los pa\u00edses te ordena las fechas por d\u00edas, &hellip;<\/p>\n<p class=\"read-more\"> <a class=\"more-link\" href=\"https:\/\/blogs.ua.es\/pi\/2014\/02\/28\/ordenar-fechas-en-javascript\/\"> <span class=\"screen-reader-text\">Ordenar fechas en JavaScript<\/span> Leer M\u00e1s  &raquo;<\/a><\/p>\n","protected":false},"author":40,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[6231,4803],"class_list":["post-3232","post","type-post","status-publish","format-standard","hentry","category-general","tag-error","tag-javascript"],"_links":{"self":[{"href":"https:\/\/blogs.ua.es\/pi\/wp-json\/wp\/v2\/posts\/3232","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.ua.es\/pi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.ua.es\/pi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.ua.es\/pi\/wp-json\/wp\/v2\/users\/40"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.ua.es\/pi\/wp-json\/wp\/v2\/comments?post=3232"}],"version-history":[{"count":1,"href":"https:\/\/blogs.ua.es\/pi\/wp-json\/wp\/v2\/posts\/3232\/revisions"}],"predecessor-version":[{"id":3233,"href":"https:\/\/blogs.ua.es\/pi\/wp-json\/wp\/v2\/posts\/3232\/revisions\/3233"}],"wp:attachment":[{"href":"https:\/\/blogs.ua.es\/pi\/wp-json\/wp\/v2\/media?parent=3232"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.ua.es\/pi\/wp-json\/wp\/v2\/categories?post=3232"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.ua.es\/pi\/wp-json\/wp\/v2\/tags?post=3232"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}