问题描述
我的祖鲁时间为“ 2011-08-12T20:17:46.384Z”。如何使用Java Joda Time提取日期部分? 我在祖鲁时间读过多个问题,但没有一个回答我。
解决方法
您想要日期在您自己的时区还是在祖鲁(UTC)?问,因为它在所有时区都不是同一日期。
祖鲁时区的日期(与字符串中的日期相同)是比较容易的要求:
String zuluString = "2011-08-12T20:17:46.384Z";
DateTime dt = DateTime.parse(zuluString);
LocalDate datePart = dt.toLocalDate();
System.out.println(datePart);
输出:
2011-08-12
在JVM的默认时区中获取日期 仅需要几个字符:
LocalDate datePart = dt.withZone(DateTimeZone.getDefault()).toLocalDate();
在亚洲/澳门时区运行时的输出:
2011-08-13
哪个新API?
Joda-Time处于维护模式,不再建议使用新代码。 Joda-Time主页显示:
请注意,Joda-Time被认为是很大程度上“完成”的项目。 没有计划进行重大增强。如果使用Java SE 8,请迁移 到
java.time
(JSR-310)。
java.time自Java 8开始内置于Java中,并且也已反向移植到Java 6和7。您可以从下面的第二个链接开始。
链接
- Joda-Time - Home
- Oracle tutorial: Date Time解释如何使用java.time。
我建议您切换到modern date-time API。
使用现代的http.oauth2ResourceServer(t -> t.jwt());
API:
http.oauth2ResourceServer(new Customizer<OAuth2ResourceServerConfigurer<HttpSecurity>>() {
@Override
public void customize(OAuth2ResourceServerConfigurer<HttpSecurity> t) {
t.jwt();
}
});
输出:
java.time (JSR-310)
通过 Trail: Date Time 了解有关现代日期时间API的更多信息。
从home page of Joda-Time documentation中查看以下几行:
Joda-Time是Java的事实上的标准日期和时间库 Java SE 8之前的版本。现在要求用户迁移到java.time (JSR-310)。
使用Joda-Time API:
import java.time.LocalDate;
import java.time.OffsetDateTime;
public class Main {
public static void main(String[] args) {
OffsetDateTime odt = OffsetDateTime.parse("2011-08-12T20:17:46.384Z");
System.out.println(odt);
LocalDate date = odt.toLocalDate();
System.out.println(date);
}
}
输出:
2011-08-12T20:17:46.384Z
2011-08-12