Boa tarde Pessoal, estou trabalhando em um projeto que preciso ler a data que esta dentro de um arquivo txt e transformar no tipo Instant para fazer comparação com a data atual, não estou conseguindo transformar a String lida do arquivo para esse formato Instant, alguém tem uma ideia? Desde já muito obrigado! Segue o código abaixo:
try {
arq = new File(Environment.getExternalStorageDirectory(),arquivo);
BufferedReader br = new BufferedReader(new FileReader(arq));
// efetua uma leitura linha a linha do arquivo a carrega
// a caixa de texto com a informação lida
while ((arquivo = br.readLine()) != null) {
//nessa parte está a minha dúvida
//preciso transformar a variável arquivo que é o retorno
// do txt em String para o formato Instant
dataArquivo = Instant.parse(arquivo);
}
br.close();
//mensagemExibir(“Atenção!”, “Leitura do arquivo efetuada com sucesso!”);
} catch (Exception e) {
// mensagemExibir(“Arquivo não encontrado”, “” + e);
}
Instant dataAtual = Instant.now();
long days = ChronoUnit.DAYS.between( dataArquivo, dataAtual );
Para você converter uma string num Instant, de acordo com o javadoc do método parse
, você precisa passar uma string no formato reconhecido pelo método dateTimeParser
, que segue o seguinte formato:
datetime = time | date-opt-time
time = 'T' time-element [offset]
date-opt-time = date-element ['T' [time-element] [offset]]
date-element = std-date-element | ord-date-element | week-date-element
std-date-element = yyyy ['-' MM ['-' dd]]
ord-date-element = yyyy ['-' DDD]
week-date-element = xxxx '-W' ww ['-' e]
time-element = HH [minute-element] | [fraction]
minute-element = ':' mm [second-element] | [fraction]
second-element = ':' ss [fraction]
fraction = ('.' | ',') digit+
offset = 'Z' | (('+' | '-') HH [':' mm [':' ss [('.' | ',') SSS]]])
Lendo com calma a sintaxe acima podemos construir a seguinte string válida para o parse
:
2016-02-15T17:47:58.257+08:00
Pois:
datetime = 2016-02-15T17:47:58.257+08:00
date-opt-time = 2016-02-15 [T [17:47:58.257] [+08:00]]
date-element = 2016-02-15
std-date-element = 2016 [- 02 [-15]]
time-element = 17 [:47:58.257]
minute-element = ':' 47 [:58.257]
second-element = ':' 58 [.257]
fraction = .257
offset = (('+') 08 [':' 00 ])
Abraço.
Felipe Torres, muito obrigado pela explicação, entendi como fazer, mas é que eu já consegui fazer no braço usando Date. Em uma próxima com certeza vou voltar a tentar utilizar desse modo!