Android 中的 ISO 8601 字符串到日期/时间对象

发布于 2024-09-27 23:21:11 字数 268 浏览 9 评论 0原文

我有一个标准 ISO 8601 格式的字符串,其中包含从 Web 服务返回的日期/时间,例如so:

String dtStart = "2010-10-15T09:27:37Z"

如何将其放入时间或日期等对象中?我最初想以不同的格式输出它,但稍后需要用它做其他事情(即可能以不同的格式使用)。

干杯

I have a string in standard ISO 8601 format that contains the date/time returned from a web service like so:

String dtStart = "2010-10-15T09:27:37Z"

How do I get this into an object such as Time or Date? I initially want to output it in a different format, but will need to do other stuff with it later (i.e. maybe use in a different format).

Cheers

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

彼岸花ソ最美的依靠 2024-10-04 23:21:12
String dtStart = "2010-10-15T09:27:37Z";  
SimpleDateFormat  format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");  
try {  
    Date date = format.parse(dtStart);  
    System.out.println(date);  
} catch (ParseException e) {  
    e.printStackTrace();  
}

这就是您正在寻找的。有关于此问题的现有帖子

String dtStart = "2010-10-15T09:27:37Z";  
SimpleDateFormat  format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");  
try {  
    Date date = format.parse(dtStart);  
    System.out.println(date);  
} catch (ParseException e) {  
    e.printStackTrace();  
}

This is what you are looking for. There is existing post about this problem.

ゝ偶尔ゞ 2024-10-04 23:21:12

这个问题是在 2010 年提出的,当时您应该使用 SimpleDateFormat 或 Joda-Time 工具,这是正确的。现在已经是很久以前的事了。今天使用的

    Instant iStart = Instant.parse(dtStart);

是的,就是这么简单。您的字符串采用 ISO 8601 格式,并且现代 Java 日期和时间 API java.time 中的类无需任何显式格式化程序即可解析 ISO 8601。 Instant 只是这些类之一。

编辑:问题:需要 android API 26 - 支持旧版本怎么样?

是的,java.time 在旧版和新版 Android 设备上都能很好地工作。它只需要至少 Java 6

  • 在 Java 8 及更高版本以及较新的 Android 设备(从 API 级别 26 开始)中,现代 API 是内置的。
  • 在 Java 6 和 7 中,获取 ThreeTen Backport,即新类的向后移植(ThreeTen for JSR 310;请参阅底部的链接)。
  • 在(较旧的)Android 上使用 ThreeTen Backport 的 Android 版本。它被称为 ThreeTenABP。并确保使用子包从 org. Threeten.bp 导入日期和时间类。

链接

This question was asked in 2010, and back then it was correct that either SimpleDateFormat or Joda-Time would be the tools you should use. It’s quite a while ago now. Today use

    Instant iStart = Instant.parse(dtStart);

Yes, it’s this simple. Your string is in ISO 8601 format, and the classes from java.time, the modern Java date and time API, parse ISO 8601 without any explicit formatter. Instant is just one of those classes.

Edit: Question: requires android API 26 - what about supporting older versions?

Yes, java.time works nicely on older and newer Android devices. It just requires at least Java 6.

  • In Java 8 and later and on newer Android devices (from API level 26) the modern API comes built-in.
  • In Java 6 and 7 get the ThreeTen Backport, the backport of the new classes (ThreeTen for JSR 310; see the links at the bottom).
  • On (older) Android use the Android edition of ThreeTen Backport. It’s called ThreeTenABP. And make sure you import the date and time classes from org.threeten.bp with subpackages.

Links

橘寄 2024-10-04 23:21:12

如果您使用当前的java.timeThreetenbp,只需像这样解析它:

ZonedDateTime dt = ZonedDateTime.parse(dtStart);

现在您可以访问日期和时间值,例如年,月,小时等。

If you use current java.time or threetenbp simply parse it like this:

ZonedDateTime dt = ZonedDateTime.parse(dtStart);

Now you can access date and time values such as year, month, hour, etc.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文