我正在开发一个项目,我在java中创建了2个变量startdate
,enddate
类型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。
答案 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 8及更高版本中。这些类取代了旧的麻烦日期时间类,例如java.util.Date
,.Calendar
和& java.text.SimpleDateFormat
。 Joda-Time团队还建议迁移到java.time。
要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。
大部分java.time功能都被反向移植到Java 6& ThreeTen-Backport中的7,并在ThreeTenABP中进一步适应Android。
Instant
第一步是退出旧课程并进入新课程。对于转换,旧方法中添加了新方法。 java.util.Date
班级现在提供toInstant
。 Instant
是UTC时间轴上的一个时刻,分辨率可以达到纳秒级。
Instant instant = myUtilDate.toInstant();
确定日期需要时区。对于任何特定时刻,日期在全球范围内按时区变化。巴黎午夜过后几分钟仍在蒙特利尔“昨天”。
ZoneId
类代表一个时区。请注意,我们从不使用主流媒体中常见的3-4字母缩写,例如EST
或IST
。这些不是真正的时区,不是标准化的,甚至不是唯一的(!)。而是使用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();