使用Joda时间从祖鲁时间提取日期



我有祖鲁时间"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

最新更新