将java Date转换为day

时间:2012-10-15 13:52:26

标签: java

我正在开发一个项目,我在java中创建了2个变量startdateenddate类型Date。 如您所知,Java中的日期包括日期和时间 但是在查询时我只需要startdate变量的日期(特别是日期)部分 我尝试了startdate.getday(),但它说它已被弃用,我应该使用Calendar.get(Calendar.DAY_OF_MONTH)代替 但我不知道如何使用它,到处尝试谷歌搜索,解决方案是获取当前日期。

如果startdate包含(30/01/1988 02:30:54),我想做一些事情,这样我就可以在字母/ int变量中分别获得30/01/1988或30和01和1988。

2 个答案:

答案 0 :(得分:4)

 Calendar cal = Calendar.getInstance();
 cal.setTime(startdate);
 cal.get(Calendar.DAY_OF_MONTH);

答案 1 :(得分:1)

java.util.Date类是旧数据时类的一部分,它们设计糟糕,令人困惑且麻烦。避免他们。

而是使用java.time类。

java.time

java.time框架内置于Java 8及更高版本中。这些类取代了旧的麻烦日期时间类,例如java.util.Date.Calendar和& java.text.SimpleDateFormatJoda-Time团队还建议迁移到java.time。

要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。

大部分java.time功能都被反向移植到Java 6& ThreeTen-Backport中的7,并在ThreeTenABP中进一步适应Android。

Instant

第一步是退出旧课程并进入新课程。对于转换,旧方法中添加了新方法。 java.util.Date班级现在提供toInstantInstant是UTC时间轴上的一个时刻,分辨率可以达到纳秒级。

Instant instant = myUtilDate.toInstant();

时区

确定日期需要时区。对于任何特定时刻,日期在全球范围内按时区变化。巴黎午夜过后几分钟仍在蒙特利尔“昨天”。

ZoneId类代表一个时区。请注意,我们从不使用主流媒体中常见的3-4字母缩写,例如ESTIST。这些不是真正的时区,不是标准化的,甚至不是唯一的(!)。而是使用tz数据库中定义的proper time zones格式为continent/region

ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = instant.atZone( zoneId );

询问ZonedDateTime您需要的部分。

int year = zdt.getYear();
int month = zdt.getMonthValue(); // Or handy Month enum…  zdt.getMonth();
int dayOfMonth = zdt.getDayOfMonth();

LocalDate

如果您在广泛的工作中想要忽略时间和时区,请使用LocalDate课程。

LocalDate localDate = zdt.toLocalDate();