Pegar ano, mês, dia... a partir do System.currentTimeMillis()

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)