我有祖鲁时间"2011-08-12T20:17:46.384Z";。如何使用java joda时间提取日期部分?我读过很多关于祖鲁时间的问题,但没有一个回答我的问题。
您希望日期在自己的时区还是在祖鲁(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,请迁移到CCD_ 1(JSR-310(。
java.time自java 8以来就被构建到java中,并且还被后移植到java 6和7中。您可以从下面的第二个链接开始。
链接
- Joda Time-主页
- Oracle教程:日期时间,解释如何使用java.Time
我建议您切换到现代日期时间API。
使用现代java.time (JSR-310)
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
有关现代日期时间API的更多信息,请访问跟踪:日期时间。
查看Joda Time文档主页上的以下行:
Joda Time是Java事实上的标准日期和时间库在Java SE 8之前。现在要求用户迁移到java.time(JSR-310(。
使用Joda-Time API:
import org.joda.time.DateTime;
import org.joda.time.LocalDate;
public class Main {
public static void main(String[] args) {
DateTime dateTime = DateTime.parse("2011-08-12T20:17:46.384Z");
System.out.println(dateTime);
LocalDate date = dateTime.toLocalDate();
System.out.println(date);
}
}
输出:
2011-08-12T20:17:46.384Z
2011-08-12