Olá galera, como que eu faço para pegar a partir do long retornado por System.currentTimeMillis(), os valores de ano, mês, dia, hora, minuto, segundo e milisegundo do correspondente System.currentTimeMillis()?
Por exemplo, eu tenho este long retornado pela função: 1330383371294
A partir deste valor:
Ano: 2012
Mês: 02
Dia: 27
…
Agradeço desde já qualquer ajuda. =)
Não sei se é possível… Mas tem alguma particularidade para não utilizar o java.util.Date?
Na verdade não. Não preciso nem utilizar o System.currentTimeMillis().
Eu preciso de uma maneira para pegar todas essas informações - ano, mês, dia, hora, minuto, segundo, milisegundo - e colocá-las em um único valor do tipo long.
Também quero que a partir de um long gerado desta forma, seja capaz de recuperar cada valor individual - ano, mês, dia, hora, minuto, segundo, milisegundo.
Agradeço qualquer ajuda.
O mais certo então acho que seria você por exemplo pegar a data e hora atual.
Date data = new Date();
depois você armazena numa string os valores usando o SimpleDateFormat para armazenar no formato que quiser por exemplo:
SimpleDateFormat formatador = new SimpleDateFormat("ddMMyyyyHHmmss");
String dataFormatada = formatador.format(data);
Acho que não seja necessário um long, depois você usa um substring para retirar os valores necessários.
Cara internamente o Date guarda os valores em um long e a partir dele é possivel obter as datas da forma que você que, para obter este valor em long é só utilizar o metodo getTime() mais detalhes em (Api java.util.Date), já para transformar uma string em Date ou um Date em String é só utilizar a classe SimpleDateFormate utilizando os metodos format(Date date) para transformar em String e parse(String date) para transformar em Date, este ultimo lança uma exception caso o formato da String passada esteja incorreto, para o SimpleDateFormat é preciso saber um pouco do seu pattern que é encontrado neste link (Api java.util.SimpleDateFormat)
tente:
//Constructs a default GregorianCalendar using the current time in the default time zone with the default locale.
Calendar c = new GregorianCalendar();
c.setTimeInMillis(System.currentTimeMillis());
System.out.println( c.get(Calendar.DAY_OF_MONTH) );
System.out.println( c.get(Calendar.MONTH) ); // 0 = JAN, 1 = FEV ....
System.out.println( c.get(Calendar.YEAR) );
Se descobrir mais alguma forma usando o currentTimeMillis poste aqui porque eu não sei outra.
abraço.
Você pode usar também para obter o objeto Date:
new Date(long millis)