Java 从日期中提取日期
我从服务接收时间戳(毫秒)。所以我这样做:Java 从日期中提取日期,java,date,Java,Date,我从服务接收时间戳(毫秒)。所以我这样做: Date date = new Date( mar.getEventDate() ); 由于诸如的方法已被弃用,如何从date提取每月的日期 我正在使用一个小黑客,但我不认为这是获得月日的正确方法 SimpleDateFormat sdf = new SimpleDateFormat( "dd" ); int day = Integer.parseInt( sdf.format( date ) ); 用于此: Calendar cal = Cale
Date date = new Date( mar.getEventDate() );
由于诸如的方法已被弃用,如何从date提取每月的日期
我正在使用一个小黑客,但我不认为这是获得月日的正确方法
SimpleDateFormat sdf = new SimpleDateFormat( "dd" );
int day = Integer.parseInt( sdf.format( date ) );
用于此:
Calendar cal = Calendar.getInstance();
cal.setTime(mar.getEventDate());
int day = cal.get(Calendar.DAY_OF_MONTH);
考虑到问题中使用的
Date date = new Date(mar.getEventDate());
方法mar.getEventDate()
返回一个long
,表示自称为“历元”的标准基准时间(即1970年1月1日00:00 GMT)以来的指定毫秒数
Java8及更高版本
在Java8中,您可以从这个值中提取一个月中的某一天,假设UTC,使用
LocalDateTime.ofEpochSecond(mar.getEventDate(),0,ZoneOffset.UTC).getDayOfMonth();
还请注意,cletus给出的答案假设
mar.getEventDate()
返回的对象与问题中的情况不同。更新:项目现在在,团队建议迁移到类。看
请参阅Ortomala Lokni使用现代java.time类编写的。我将把这个过时的答案作为历史保留下来
洛克尼的结论是正确的 这里是相同的想法,但使用2.8
使用.FYI,像和
java.text.simpleDataFormat
这样麻烦的旧日期时间类现在被java 8和更高版本中内置的类所取代。请参阅。在项目中,java.time的大部分功能都被向后移植到Java6和Java7。进一步适应项目中早期的Android。看见
long millisSinceEpoch = mar.getEventDate() ;
DateTimeZone zone = DateTimeZone.forID( "America/Montreal" ) ; // Or DateTimeZone.UTC
LocalDate localDate = new LocalDate( millisSinceEpoch , zone ) ;
int dayOfMonth = localDate.getDayOfMonth() ;