Como capturar os dois últomos dígitos da data corrente[java]

Olá pessoal estou desenvolvendo um sistema de gestão para uma empresa tecnológica. Para além da venda de produtos Tecnológicos a empresa também tem dado formações, logo há necessidade de cadastrar os alunos no sistema.

A ideia é criar um número de estudante de forma automática e aqui está a minha dificuldade para criar-lo. Este código ela tem que capturar os dois últimos dígitos do ano corrente e uma sequência de 4 números que vai sendo incrementado.

Ex: 201345
20 -> ano corrente

1245 -> números a ser incrementado

Conto com a vossa ajuda manos!

Voce pode algo desse tipo:

private Long montarNumeroPedido() {
    //retornaria  2010115720
	String numeroPedido = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyMMdHmmss"));
	return new Long(numeroPedido);
}

como voce quer apenas o ano voce vai usar “yy”. concatena sua string e depois returna um long.

1 curtida

Como vc precisa que o número vá incrementando em sequencia, vc poderia usar algo assim:

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class Main {
  private static Integer contador = 1;

  public static void main(String[] args) {
    System.out.println(numeroDeEstudante());
    System.out.println(numeroDeEstudanteComoLong());
  }

  static String numeroDeEstudante() {
    String ano = LocalDate.now().format(DateTimeFormatter.ofPattern("yy"));
    return String.format("%s%04d", ano, contador++);
  }

  static long numeroDeEstudanteComoLong() {
    String ano = LocalDate.now().format(DateTimeFormatter.ofPattern("yy"));
    return Long.parseLong(String.format("%s%04d", ano, contador++));
  }
}

O especificador “%04d” se encarrega de completar com zeros quando o número tiver menos de 4 digitos, então se o contador for um, ele vai retornar 200001, e se for algo como 1345, seria 201345.

Fiz uma versão que retorna String e outra long, mas acho mais seguro retornar uma String.

O método Long.parseLong() converte uma String em um primitivo long, se precisar de um Long, pode usar o Long.valueOf(). Criar um Long usando um contructor (ex.: new Long("123")) está obsoleto desde o Java 9.

1 curtida
int anoComDoisDigitos = anoAtual - 2000;
2 curtidas

Disculpa pela demora mano estou de volta estava tendo uns problemas e obrigado pela ajuda vou implentar e ver como fica

1 curtida

Desculpa a demora estive ausente por um tempo e muito obrigado pela ajuda mano

1 curtida