java-来自Django的android格式datetime

java-来自Django的android格式datetime,第1张

概述我正在使用json和其余框架将django网站连接到android应用json数据包含这样的日期时间:{date:"2018-06-05T12:42:48.545140Z"}当android收到日期时,我尝试使用以下代码对其进行格式化:Stringdt="2018-06-05T12:42:48.545140Z";DateFormatformatter=newSimp

我正在使用Json和其余框架将django网站连接到android应用

Json数据包含这样的日期时间:

{   date: "2018-06-05T12:42:48.545140Z"}

当androID收到日期时,我尝试使用以下代码对其进行格式化:

    String dt="2018-06-05T12:42:48.545140Z";    DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy hh:mm");    String date=formatter.format(Date.parse(dt));

我得到以下错误:

java.lang.IllegalArgumentException:

解析错误:2018-06-14T14:30:02.982009Z

在java.util.Date.parseError(Date.java:367)

在java.util.Date.parse(Date.java:448)

在Django模板中,我可以轻松地做到这一点

{{article.date | date:’d-m-Y H:i’}}

但是在androID中我有点困惑

解决方法:

如果您使用的是java.time API,则可以使用:

String dt = "2018-06-05T12:42:48.545140Z";zoneddatetime zdt = zoneddatetime.parse(dt); String newFormat = zdt.format(DateTimeFormatter.ofPattern("dd/MM/yyyy hh:mm"));System.out.println(newFormat);//05/06/2018 12:42

注意我不使用任何格式化程序,默认的zoneddatetime可以解析您的日期.

或如@Basil Bourque所述,更适合解析为Instance而不是zoneddatetime:

String newFormat = Instant.parse(dt)        .atZone(ZoneID.of("Pacific/Auckland"))        .format(DateTimeFormatter.ofPattern("dd/MM/yyyy hh:mm"));

关于您的错误

您的错误来自Date.parse(dt),因为Date的默认模式无法解析您的日期,您需要为其指定正确的格式,以便它可以了解如何格式化日期.例如 :

String date = formatter.format(        new SimpleDateFormat("the pattern which match your string date (dt)").format(dt));

但是无论如何我都不建议使用SimpleDateFormat或Date.

ThreeTen-Backport项目移植到Java 6& java.time的大部分功能都具有几乎相同的API语法.在ThreeTenABP项目中进一步适用于较早的AndroID(< 26).参见How to use ThreeTenABP.

总结

以上是内存溢出为你收集整理的java-来自Django的android格式datetime全部内容,希望文章能够帮你解决java-来自Django的android格式datetime所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1092126.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存