¿Existe un formato de fecha universal que cualquiera en el mundo pueda entender?


10

En Canadá, todos están familiarizados con el formato de fecha YYYY-MM-DD. En Europa o Sudáfrica, prefieren DD-MM-YYYY. Hay usuarios de Sudáfrica que se confunden con el YYYY-MM-DDformato de fecha. ¿Hay alguna manera de manejar esta situación?

Estaba pensando en usar el siguiente formato de método para todos: Feb 02, 2011


21
Creo que el formato AAAA-MM-DD también es un estándar ISO.
FrustratedWithFormsDesigner

2
"En Europa o Sudáfrica, prefieren DD-MM-YYYY". Excepto, por ejemplo, en Hungría ( YYYY.MM.DD) o Finlandia ( DD.MM.YYYY), o ... Lo siento, la realidad es desordenada :-(
Péter Török

66
¿Qué pasa con los diferentes calendarios?

44
Al recoger datos de radar (en Norteamérica), se utilizó esto para nombres de archivo: prefix_1999_12_23_16_45_53.ext. Motivo principal: fue muy fácil de ordenar, buscar y analizar. Al buscar, realmente desea comenzar con la unidad más importante primero para alcanzar el objetivo lo antes posible. Este tipo de cadena es incluso amigable con el árbol binario. El laboratorio estaba dominado por estudiantes de Europa, pero creo que esto era solo sentido común, si no un estándar científico. Sin embargo, en un país donde crecí, usaríamos DD-MM-AAAA para el uso diario. Razonamiento: cuando te despiertas, ¿cuál es la primera parte que quieres saber?
Trabajo

2
@Frustrated, supongo que su punto es que hay calendarios con un año de partida diferente (¿cómo interpretar un musulmán por ejemplo, 12/30/1268?), O meses lunares (de los cuales hay aprox. 13 por año), etc. Así que para ser realmente universal es más que simplemente acordar qué número es el día y cuál es el mes ...
Péter Török

Respuestas:


15

La parte ambigua es diferenciar el día del mes si están representados por números.

¿02/03 significa 03 de febrero o 02 de marzo?

Al cambiar el identificador del mes de su número con su nombre , elimina esa ambigüedad. Para responder a su pregunta, su variante de Feb 02, 2011parece ser una buena solución.

Todavía hay un problema potencial con el número del año si lo está escribiendo solo con 2 dígitos, pero luego es fácil de solucionar (use 4).


10
Y luego puede tener un archivo de traducción para los nombres de los meses en diferentes idiomas.
FrustratedWithFormsDesigner

1
@FrustratedWithFormsDesigner Y no se olvide de obtener también una traducción profesional a las abreviaturas correctas (conocidas).
Nicole

¿Qué pasa con los idiomas que no se molestan en nombrar los meses?
SOLO MI OPINIÓN correcta

19

No. No hay un formato de fecha universalmente reconocido.

ISO 8601 define un estándar internacional para formatos de fecha. Como tal, es probablemente el mejor compromiso. Pero como dices, a los usuarios no siempre les gusta este formato.

La única solución correcta es presentar un formato diferente para diferentes países. Puede encontrar que hay una biblioteca estándar para lograr esto si su lenguaje de programación elegido tiene un seguimiento significativo.


2
Esto es genial. Usualmente uso YYYYMMDD para archivos de registro, etc. ¡Ahora puedo decir que solo estoy cumpliendo con ISO-8601!
Mark Harrison

1
Cuando uso ISO 8601, generalmente encuentro que es mejor formatear toda la explicidad, es decir, 1999-12-25T00: 00: 00.000Z . Sí, parece una tontería para la persona promedio, pero no hay posibilidad de ambigüedad.
MattDavey

2
"La única solución correcta es presentar un formato diferente para diferentes países". ¿Y cómo, exactamente, debería imprimir una fecha en un albarán que podría enviarse a cualquier parte del mundo?
Scott Whitlock

@ScottWhitlock: Lamentablemente, no hay una solución universalmente aceptada para este problema. Si no sabe a dónde se envía un paquete cuando imprime la fecha, entonces ISO 8601 puede ser su mejor opción.
Kramii

"La única solución correcta es presentar un formato diferente para diferentes países". Yo diría que esto no es correcto. Sucede hoy que algunas bibliotecas tienen una idea útil de mi formato de fecha preferido, basado en mi idioma preferido, que causó confusión. Pero como primer paso ya que no podemos arreglar todas las culturas en este momento, use ISO 8601 o texto por meses o algo así.
Erik I

9

Deberías usar la información cultural para eso. O al menos el formato de visualización local.

En JavaScript, puede usar el método toLocaleString para la clase Date .

Para C #, puede usar la cadena de formato cuando use ToString .

Una búsqueda rápida en Google debería mostrarle cómo usar la cultura en el idioma que elija.


5

Iría con AAAA-MM-DD (y siempre escribiría los años de cuatro dígitos y los meses y días de dos dígitos). YYYY-DD-MM, que yo sepa, es poco común a raro, por lo que el formato AAAA-MM-DD es el que tiene menos ambigüedad, y eventualmente sus usuarios se darán cuenta. Además, obtienes la ventaja de clasificación trivial.


2

¿Puede dar a cada usuario su propia configuración regional, que luego representa las fechas y otra información de acuerdo con sus preferencias locales?


1

Muchas veces puede configurar la configuración regional y usar I18n en la mayoría de los marcos.


0

En el caso general, deberá especificar tanto el formato como el valor. Esta es la única forma de evitar cualquier confusión. Por ejemplo, puede decir "2011-02-02 (AAAA-MM-DD)". Sin embargo, viene a expensas de la simplicidad y la legibilidad, así que conozca a su audiencia.

Puede, por supuesto, decir "De aquí en adelante, todas las fechas están en el formato AAAA-MM-DD ...." Entonces "02/02/2011" que aparecerá más adelante no será ambiguo. Eso puede ser más apetecible, pero nuevamente, conozca a su audiencia.


Correcto, excepto que en estonio día = päev y mes = kuu, en filipino son: araw y buwan, en finlandés: päivä, kuukausi, en húngaro: siesta, hónap, en indonesio: hari, bulan, en maltés: jum, xahar , en rumano: zi, lună, en turco: gün, ay, en vietnamita: ngày, tháng ... sin mencionar muchos idiomas en los que ninguno de los meses comienza con m o el día no comienza con d (alemán: Monat, Tag ) así como idiomas que no usan nada como el alfabeto latino.
Trabajo

1
Bueno, "02/02/2011" no es ambiguo en ningún caso ...;)
Martin

0

Esta sugerencia es probablemente inútil, pero he visto meses escritos como números romanos. Claro, el 3 / XI / 2011 puede ser el 11 de noviembre o el 3 de marzo, pero supongo que la primera interpretación es más natural.


1
¿Números romanos? "¿Natural?"
Wonko el sano

@Wonko, "natural" en el sentido de que en ese contexto es más probable que XI se interprete como un mes que como un día. Admito que es extremadamente subjetivo.
ggambett

+1, yo mismo estaba pensando en algo así. Sin embargo, también estoy de acuerdo con sus críticos.
Trabajo

Como nunca antes había visto ese formato, primero pensaría "error tipográfico" o "error de traducción" antes de que apareciera en mí "números romanos". Solo entonces trataría de adivinar el significado.
Wonko the Sane

Sin mencionar que el 3 / II / 2011 terminará siendo interpretado como noviembre.
MSalters

0

Diría que depende de lo que esté haciendo, cuánto control tiene sobre la entrada y ¿lo está almacenando en algún lugar?

Para el almacenamiento, usaría lo que sugirió Mike Dunlavey:

YYYYMMDDHHMMSS donde la hora está en UTC es el camino que tomo cada vez que tengo una opción, por las razones que me das. Cuando no tengo otra opción, dejo que el usuario elija.

Él no dejó esto como respuesta, así que lo haré.

Una cosa más: vea la siguiente captura de pantalla de cómo ingresar la fecha de vencimiento de CC: http://www.ubercart.org/files/credit_card_checkout.jpg

Lo bueno de este ejemplo es que no te hace pensar. Utiliza números y nombres para el mes. Consideraría usar algo similar para la entrada. Para el mes, incluya tanto el número como el nombre localizado. Para el año y el día, use cuadros numéricos Arriba / Abajo o combinados. Entonces, el control del calendario también parece ingenioso.

Como dije, depende. Para almacenamiento: si usa una base de datos, verifique si ya proporciona un buen formato de datos inequívoco. Si usa algún otro método, vea si "AAAAMMDDHHMMSS donde la hora está en UTC" ayuda. Para presentarlo al usuario, tenga en cuenta qué países / localidades pueden estar involucrados, luego elija el tipo de representación más directo, "No me haga pensar". También considere proporcionar una opción.

Finalmente, mira algunos productos geniales que ya hacen algo similar, y trata de averiguar cómo lo hacen.


Ah, mierda, cuando leí la captura de pantalla pensé que estábamos hablando del 11 de noviembre ... solo para darme cuenta de que el día no era necesario cuando se hablaba de la fecha de vencimiento de la tarjeta de crédito: /
Matthieu M.

@Matthieu M., sí, eso es un poco engañoso :) Sin embargo, si tiene un CC en la mano y está a punto de realizar la entrada de datos, tal vez ayude más de lo que duele. Si hubiera tres cajas, una para el día, entonces esto podría ser menos ambiguo.
Trabajo

0

No existe un formato universal de fecha y hora para los usuarios finales del sitio web. Tampoco hay un valor de fecha y hora único porque el valor es diferente por zona horaria del cliente. Debe usar la globalización: su orientación de datos, hora, moneda, calendario, formatos nubmer basados ​​en la cultura de los usuarios (se puede recibir de los idiomas aceptados que se pasan del navegador del usuario o mediante un interruptor implementado directamente en su aplicación). Algunas API (por ejemplo .NET) tienen soporte directo de estas características.

Para almacenar la fecha y la hora en databse, utilice el formato universal - UTC (hora universal coordinada).


UTC no es tan universal: si desea tener en cuenta los segundos bisiestos, debe usar TAI
mouviciel

-2

Es lamentable que toda la inteligencia en el mundo de la computación internacional no pueda descifrar esta tuerca.

Ni Microsoft ni otros proveedores han considerado agregar una máscara de fecha que haga que el mes parezca estar lleno de cero, al igual que el día, pero con tres dígitos. La adopción de la práctica ayudaría a promover una nueva serie de formatos de fecha modificados que sean matemáticamente equivalentes y que sean fáciles de identificar y distinguir en cualquiera de los diseños de fecha tradicionales. Es decir:

  • 0MM-DD-AAAA, p. Ej. 002-03-2016 para febrero 03,2016

  • DD-0MM-AAAA, p. Ej. 03-002-2016 para 03-feb-2016

  • AAAA-0MM-DD, por ejemplo, 2016-002-03 para 2016-02-03

  • AAAA-DD-0MM, por ejemplo, 2016-03-002 (¡si alguien quisiera usarlo!)

Parece demasiado fácil arreglarlo de esta manera ... Supongo que simple simplemente no se vende bien.


2
Todo lo que puedo decir es: xkcd.com/927 Ya tenemos un estándar ISO para las fechas, y no necesitamos otro.
Simon B
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.