Formato de caracteres chinos convierte la fecha por time4j a gregoriano en Java

AliDK:

Estoy trabajando en un proyecto en Java y tengo que cambiar diferentes tipos de fechas entre sí como (gregoriano a chino y viceversa, y gregoriano a Hijri y viceversa). Trato de usar Time4j que tiene esta facilidad para convertir diferentes tipos de fechas entre sí, pero por desgracia, yo no entendía cómo trabajar con esta biblioteca, incluso después de que trató de leer su documentación.

En este momento estoy tratando de convertir la fecha gregoriana hasta la fecha chino, pero no puedo conseguir el año normal en la fecha en chino cuando uso object.getYear()se vuelve cíclico años pero necesito año normal como 2019.

Este es mi código:

import net.time4j.PlainDate;
import net.time4j.calendar.ChineseCalendar;
public class DateConverter {

static PlainDate gregorian = PlainDate.nowInSystemTime();
static ChineseCalendar obj = gregorian.transform(ChineseCalendar.axis());

public static void main(String[] args) {

    String result = obj.getMonth() + "/" + obj.getDayOfMonth() + "/" + obj.getYear() ;

    System.out.println(result);         // 8/30/ji-hai(36)
    System.out.println(obj);            // chinese[ji-hai(2019)-8-30]
}
}

Necesito este tipo de ejercicio ji-Hai (2019) y es en su defecto toString()método y cuando se utiliza object.getYear()el método devuelve ji-Hai (36) .

Ahora, ¿cómo puedo cambiar de valor de retorno de ji-Hai (36) a Ji-Hai (2019) . Además, si quiero recibir la fecha gregoriana de un usuario cómo debería prepararse para esta conversión? ¿Puedo recibir como un texto de Cuerdas y echarlo a la fecha gregoriana y luego usarlo? Es decir es posible?

Además, si usted sabe un recurso bueno que explica el uso de las clases y los métodos de Time4j con ejemplo por favor, comparta conmigo.

gracias.

Meno Hochschild:

solución a corto:

En lugar de tratar de confiar en los toString()-Métodos de diversos tipos, como CyclicYearetc., se recomienda utilizar el formato de un motor dedicado que es capaz de manejar calendarios chinos. Time4J tiene su propio motor de formato basado en la clase ChronoFormatter :

    ChineseCalendar obj = PlainDate.nowInSystemTime().transform(ChineseCalendar.axis());

    ChronoFormatter<ChineseCalendar> f =
        ChronoFormatter.ofPattern(
          "d/M/U(r)", 
          PatternType.CLDR, 
          Locale.ROOT, 
          ChineseCalendar.axis());

    System.out.println(f.print(obj));   
    // output today: 1/9/ji-hai(2019)

Patrón y el año chino:

He utilizado el patrón "d / M / T (r)". El "normal" año del calendario chino es el año cíclico representado por el símbolo patrón CLDR "U". Cycliy años se repiten después de 60 años de comenzar un nuevo ciclo. Cualquier otra definición del año es claramente inusual. Esto podría sorprender a los usuarios occidentales, ya que a menudo esperan que existe algún tipo de conteo años proléptico simplemente de una manera adelante. Sin embargo, Time4J también es compatible con otros dos tipos de años. Uno de ellos es el año de la era que ahora es sólo de interés histórico. Y el otro tipo de año es el año gregoriano relacionado (utilizando el símbolo patrón de "r"). Su principal objetivo es sólo para el año cíclico unambigous. De ahí que muchas personas como para estructurar años chinas como una combinación de ejercicio cíclico y el año gregoriano relacionado en este formulario:

U(r) or r(U)

Incluso es posible determinar el zodiaco chino que repite después de sólo 12 años. Teniendo en cuenta que tener un objeto calendario chino, se puede determinar el zodiaco de esta manera:

    String zodiac = obj.getYear().getZodiac(Locale.ENGLISH);
    System.out.println("Year of " + zodiac); // Year of Pig

manera inversa (análisis sintáctico y transformando a gregoriano):

Sólo tiene que utilizar el formateador definido anteriormente y luego analizar:

    PlainDate gregorian = f.parse("1/9/ji-hai(2019)").transform(PlainDate.axis());
    System.out.println(gregorian); // output: 2019-09-29

transcripciones sobre:

He utilizado la configuración regional raíz de la construcción del formateador. Produce el año cíclico en letras latinas simples sin ningún tipo de signos diacríticos. Si es posible que desee utilizar la transcripción oficial de Pinyin se puede aplicar la configuración regional Inglés en su lugar. El año cíclica aparecería entonces como "jǐ-Hai". transcripciones especiales que utilizan otros scripts son compatibles con los idiomas Chino (misma secuencia de comandos también para el coreano y japonés), vietnamita y ruso.

La API-documentación de Time4J se puede encontrar en línea . El documento ya contiene ejemplos para formatear y analizar el calendario chino. Pero Doy la bienvenida a cualquier contribución adicional al o sugerencias concretas para mejorarlo.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=313997&siteId=1
Recomendado
Clasificación