Formatação chinês data convertido por time4j a Gregoriana, em Java

AliDK:

Eu estou trabalhando em um projeto em Java e eu preciso mudar diferentes tipos de datas para o outro como (Gregoriano para Chinês e vice-versa e Gregoriano para Hijri e vice-versa). Eu tento usar Time4j que tem esta facilidade para converter diferentes tipos de datas para o outro, mas, infelizmente, eu não entendia como trabalhar com esta biblioteca, mesmo depois que eu tentei ler sua documentação.

Agora eu estou tentando converter data gregoriana a data chinês, mas eu não posso começar o ano normal na data chinês quando eu uso object.getYear()ele retorna ano cíclica mas eu preciso de ano normal como 2019.

Este é meu 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]
}
}

Eu preciso este tipo de ano ji-hai (2019) e é padrão toString()método e quando eu usar object.getYear()método retorna ji-hai (36) .

Agora, como posso alterar o meu valor de retorno de ji-hai (36) para ji-hai (2019) . Além disso, se eu quiser receber a data Gregoriana de um usuário como devo preparado para esta conversão? Posso recebê-lo como um texto de Cordas e lançá-lo aos data gregoriana e, em seguida, usá-lo? Será que é possível?

Também se você conhece um bom recurso que explica o uso de classes e métodos de Time4j com exemplo por favor compartilhá-lo comigo.

obrigado.

Meno Hochschild:

solução de curto:

Em vez de tentar contar com os toString()-Métodos de vários tipos, como CyclicYearetc, eu recomendo usar um motor de formato dedicado que é capaz de lidar calendário chinês. Time4J tem o seu próprio motor de formato com base na classe 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)

Padrão e anos chineses:

I ter usado o padrão de "d / M / L (r)". O ano "normal" do calendário chinês é o ano cíclico representado pelo símbolo padrão CLDR "U". Anos Cycliy repetir após 60 anos de iniciar um novo ciclo. Qualquer outra definição de ano é claramente incomum. Isso pode surpreender os usuários ocidentais porque muitas vezes eles esperam que haja qualquer tipo de contagem de ano proleptic apenas de uma maneira para a frente. No entanto, Time4J também suporta dois outros tipos de anos. Um deles é o ano da era que agora é apenas de interesse histórico. E o outro tipo de ano é o ano gregoriano relacionada (usando o símbolo padrão de "r"). Seu principal objetivo é apenas para fazer o ano cíclica sem ambiguidades. Por isso muitas pessoas gostam de estruturar anos chineses como uma combinação de ano cíclica e ano gregoriano relacionado nesta forma:

U(r) or r(U)

É ainda possível determinar o zodíaco chinês que se repete depois de apenas 12 anos. Dado que você tem um objeto calendário chinês, você pode determinar o zodíaco desta forma:

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

maneira inversa (análise e transformando a gregoriano):

Basta usar o formatador definido acima e, em seguida, analisar:

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

transcrições sobre:

Eu tenho usado o local raiz para a construção do formatador. Ela produz o ano cíclica em letras latinas simples, sem quaisquer sinais diacríticos. Se você pode querer usar a transcrição oficial pinyin você pode aplicar o Inglês locale vez. O ano cíclica, então, aparecem como "jǐ-Hai". transcrições especiais utilizando outros scripts são suportados para o idioma Chinês (mesmo script também para coreano e japonês), vietnamita e russo.

A API-documentação de Time4J podem ser encontrados on-line . O doc já contém exemplos para a formatação e análise do calendário chinês. Mas congratulo-me com quaisquer outras contribuições para ele ou sugestões concretas para melhorá-lo.

Acho que você gosta

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