开发者

extract day from Date

I receive a t开发者_开发百科imestamp from a SOAP service in milliseconds. So I do this:

Date date = new Date( mar.getEventDate() );

How can I extract the day of the month from date, since methods such as Date::getDay() are deprecated?

I am using a small hack, but I do not think this is the proper way to obtain day-of-month.

SimpleDateFormat sdf = new SimpleDateFormat( "dd" );
int day = Integer.parseInt( sdf.format( date ) );


Use Calendar for this:

Calendar cal = Calendar.getInstance();
cal.setTime(mar.getEventDate());
int day = cal.get(Calendar.DAY_OF_MONTH);


Update: The Joda-Time project is now in maintenance mode, with the team advising migration to the java.time classes. See Tutorial by Oracle.

See the correct Answer by Ortomala Lokni, using the modern java.time classes. I am leaving this outmoded Answer intact as history.


The Answer by Lokni is correct.

Here is the same idea but using Joda-Time 2.8.

long millisSinceEpoch = mar.getEventDate() ;
DateTimeZone zone = DateTimeZone.forID( "America/Montreal" ) ;  // Or DateTimeZone.UTC
LocalDate localDate = new LocalDate( millisSinceEpoch , zone ) ;
int dayOfMonth = localDate.getDayOfMonth() ;


Given the Date constructor used in the question

Date date = new Date(mar.getEventDate());

The method mar.getEventDate() returns a long that represent the specified number of milliseconds since the standard base time known as "the epoch", namely January 1, 1970, 00:00:00 GMT.

Java 8 and later

In Java 8, you can extract the day of the month from this value, assuming UTC, with

LocalDateTime.ofEpochSecond(mar.getEventDate(),0,ZoneOffset.UTC).getDayOfMonth();

Note also that the answer given by cletus assume that mar.getEventDate() returns a Date object which is not the case in the question.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜