Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从日期中提取日期_Java_Date - Fatal编程技术网

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() ;