как извлечь день, месяц и год из метки времени (длинный формат) - PullRequest
20 голосов
/ 07 июня 2011

Мне нужно получить день года и месяц из объекта отметки времени в виде длинных чисел:

public long getTimeStampDay()
    {

            String iDate = new SimpleDateFormat("dd/MM/yyyy")
        .format(new Date(born_date.getDate())); 
         .....

              return day; //just the day

    }

public long getTimeStampMonth()
    {
    String iDate = new SimpleDateFormat("dd/MM/yyyy")
        .format(new Date(born_date.getDate())); 
         .....

              return month; //just month

    }

public long getTimeStampYear()
    {
    String iDate = new SimpleDateFormat("dd/MM/yyyy")
        .format(new Date(born_date.getDate())); 
         .....

              return year; //just year
    }

born_date - объект отметки времени.

Возможно ли это сделать?

Заранее спасибо.

Ответы [ 5 ]

48 голосов
/ 07 июня 2011
long timestamp = bornDate.getTime();
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(timestamp);
return cal.get(Calendar.YEAR);

Для каждого необходимого свойства есть поля календаря.

В качестве альтернативы вы можете использовать joda-time :

DateTime dateTime = new DateTime(bornDate.getDate());
return datetime.getYear();
0 голосов
/ 08 июля 2019

Небольшое обновление этого хорошо принятого потока, которое сейчас немного устарело.

В свое время в Java 8 появился API даты и времени, который делает извлечение намного чище.

Предположим, что bornDate является экземпляром LocalDateTime.

bornDate.getDayOfMonth(); // extracts day of month
bornDate.getMonth();      // extracts month
bornDate.getYear();       // extracts year

Ссылка на Oracle: Java SE 8 Дата и время

0 голосов
/ 17 августа 2011

Этот метод возвращает день, дату, год и время:

Timestamp timestamp = new Timestamp(System.currentTimeMillis());
0 голосов
/ 07 июня 2011

Я нашел простой способ сделать это:

born_date.getDay();
born_date.getMonth();
born_date.getYear();

, даже если методы getDay getMonth и getYear устарели.Я думаю, что Божо решение является лучшим.

0 голосов
/ 07 июня 2011

Видя, что вы используете формат даты в каждом методе, вы можете использовать разные строки формата в каждом. Например:

public long getTimeStampDay()
    {

            String day = new SimpleDateFormat("dd")
        .format(new Date(born_date.getDate())); 
         .....

              return Long.parseLong(day); //just the day

    }
...