我从SOAP服务收到一个以毫秒为单位的时间戳。所以我这样做:
Date date = new Date( mar.getEventDate() );
既然Date::getDay()
等方法已被弃用,我如何从date中提取月份的第几天?
我使用了一个小技巧,但我不认为这是获取月份日的正确方式。
SimpleDateFormat sdf = new SimpleDateFormat( "dd" );
int day = Integer.parseInt( sdf.format( date ) );
发布于 2010-04-12 11:16:48
使用Calendar
执行以下操作:
Calendar cal = Calendar.getInstance();
cal.setTime(mar.getEventDate());
int day = cal.get(Calendar.DAY_OF_MONTH);
发布于 2015-06-14 21:17:48
给定问题中使用的Date constructor
Date date = new Date(mar.getEventDate());
mar.getEventDate()
方法返回一个long
,它表示自称为“纪元”的标准基准时间(即1970年1月1日,格林威治时间00:00:00 )以来指定的毫秒数。
Java 8和更高版本
在Java8中,您可以从这个值中提取月份的第几天,假设UTC,使用
LocalDateTime.ofEpochSecond(mar.getEventDate(),0,ZoneOffset.UTC).getDayOfMonth();
另请注意,cletus给出的答案假设mar.getEventDate()
返回一个Date
对象,但问题中的情况并非如此。
https://stackoverflow.com/questions/2619691
复制相似问题