yyyy variable una tomar teclado sistema sacar por para obtener ingresar hora funcion fecha declarar como actual java date internationalization

variable - obtener fecha actual java dd/mm/yyyy



¿Cómo controlar la capitalización de los nombres de mes y día devueltos por DateFormat? (5)

Aquí hay un programa de prueba rápido:

public static void main( String[] args ) { Date date = Calendar.getInstance().getTime(); System.out.println("Months:"); printDate( "MMMM", "en", date ); printDate( "MMMM", "es", date ); printDate( "MMMM", "fr", date ); printDate( "MMMM", "de", date ); System.out.println("Days:"); printDate( "EEEE", "en", date ); printDate( "EEEE", "es", date ); printDate( "EEEE", "fr", date ); printDate( "EEEE", "de", date ); } public static void printDate( String format, String locale, Date date ) { System.out.println( locale + ": " + (new SimpleDateFormat( format, new Locale( locale ) )).format( date ) ); }

El resultado es:

Months: en: September es: septiembre fr: septembre de: September Days: en: Monday es: lunes fr: lundi de: Montag

¿Cómo puedo controlar la capitalización de los nombres? Por alguna razón, los españoles y los franceses siempre parecen devolver nombres que comienzan con una letra minúscula.


Es posible que no desee cambiar las mayúsculas: las diferentes culturas utilizan mayúsculas y minúsculas en las diferentes palabras (por ejemplo, en alemán se capitalizan todos los sustantivos, no solo los sustantivos propios).


Las reglas de capitalización son diferentes para diferentes idiomas. En francés, los nombres de los meses no deben estar en mayúscula .


No todos los idiomas comparten las reglas de capitalización en inglés. Supongo que necesitarás modificar los datos utilizados por la API, pero es posible que tus clientes no ingleses no lo aprecien ...

about.com en la capitalización francesa


Ahora estoy teniendo un problema donde una oración comienza con "dimanche 07 mars", lo que no importaría si no fuera al comienzo de una oración. Supongo que esto no se puede cambiar, a menos que haga manipulación manual de cadenas en el primer carácter de la cadena.


tl; dr

Month.from( LocalDate.now( ZoneId.of( "Pacific/Auckland" ) ) ) .getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH )

lundi

Localizar

Como otros dijeron, no deberías estar forzando tus propios conceptos parroquiales (¿inglés de los Estados Unidos?) De capitalización. Use una biblioteca decente de fecha y hora y permita que se localice automáticamente para usted.

java.time

Estás utilizando antiguas clases de fecha y hora que ahora son heredadas, suplantadas por las clases de java.time.

La clase LocalDate representa un valor de solo fecha sin hora del día y sin zona horaria.

Un huso horario es crucial para determinar una fecha. Para cualquier momento dado, la fecha varía alrededor del mundo por zona. Por ejemplo, unos minutos después de la medianoche en París, Francia es un nuevo día cuando todavía está "ayer" en Montreal Québec .

Especifique un nombre de zona horaria adecuada en el formato continent/region , como America/Montreal , Africa/Casablanca o Pacific/Auckland . Nunca utilice la abreviatura de 3-4 letras, como EST o IST ya que no son zonas horarias verdaderas, no están estandarizadas y ni siquiera son únicas (!).

ZoneId z = ZoneId.of( "Asia/Kolkata" ); LocalDate today = LocalDate.now( z );

Para trabajar con un mes, extrae un objeto de enumeración de Month . Lo mismo para el día de la semana, DayOfWeek .

Llamar a getDisplayName . Pase un TextStyle por abreviatura. Pasar una Locale para determinar (a) el idioma humano para la traducción del nombre del día, el nombre del mes y demás, y (b) las normas culturales que deciden los problemas de abreviación, uso de mayúsculas, puntuación, separadores, etc. Tenga en cuenta que Locale no tiene nada que ver con la zona horaria.

Month m = today.getMonth() ; String mNameQuébec = m.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ; String mNameGermany = m.getDisplayName( TextStyle.FULL , Locale.GERMANY ) ;

…y…

DayOfWeek dow = today.getDayOfWeek() ; String dowNameQuébec = dow.getDisplayName( TextStyle.FULL , Locale.CANADA_FRENCH ) ; String dowNameGermany = dow.getDisplayName( TextStyle.FULL , Locale.GERMANY ) ;

Acerca de java.time

El marco java.time está integrado en Java 8 y posterior. Estas clases suplantan a las problemáticas antiguas clases heredadas de fecha y hora como java.util.Date , Calendar y SimpleDateFormat .

El proyecto Joda-Time , ahora en modo de mantenimiento , aconseja la migración a las clases java.time .

Para obtener más información, consulte el Tutorial de Oracle . Y busque para obtener muchos ejemplos y explicaciones. La especificación es JSR 310 .

¿Dónde obtener las clases de java.time?

  • Java SE 8 , Java SE 9 y posterior
    • Incorporado.
    • Parte de la API Java estándar con una implementación integrada.
    • Java 9 agrega algunas características y correcciones menores.
  • Java SE 6 y Java SE 7
    • Gran parte de la funcionalidad de java.time se transfiere a Java 6 y 7 en ThreeTen-Backport .
  • Androide
    • El proyecto ThreeTenABP adapta ThreeTen-Backport (mencionado anteriormente) específicamente para Android.
    • Consulte Cómo utilizar ThreeTenABP ....

El proyecto ThreeTen-Extra amplía java.time con clases adicionales. Este proyecto es un terreno de prueba para posibles adiciones futuras a java.time. Puede encontrar algunas clases útiles aquí, como Interval , YearWeek , YearQuarter y más .