首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >来自django的android格式datetime

来自django的android格式datetime
EN

Stack Overflow用户
提问于 2018-06-18 05:48:30
回答 2查看 881关注 0票数 4

我正在使用json和rest框架将我的django网站连接到一个android应用程序

json数据包含日期时间,如下所示:

代码语言:javascript
复制
{
   date: "2018-06-05T12:42:48.545140Z"
}

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

代码语言:javascript
复制
    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模板中,我可以很容易地做到这一点

{{文章.Date|日期:‘d-m-Y H:i'}}

但在android上我有点困惑

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-18 06:54:53

我通过更改序列化程序类中的日期格式解决了这个问题

代码语言:javascript
复制
    date = serializers.DateTimeField(format="%m/%d/%Y %H:%M", required=False, read_only=True)
票数 1
EN

Stack Overflow用户

发布于 2018-06-18 05:54:05

如果您使用的是接口,您可以使用:

代码语言:javascript
复制
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可以解析您的日期。

或者,正如提到的,解析为Instance比解析为ZonedDateTime更合适:

代码语言:javascript
复制
String newFormat = Instant.parse(dt)
        .atZone(ZoneId.of("Pacific/Auckland"))
        .format(DateTimeFormatter.ofPattern("dd/MM/yyyy hh:mm"));

关于你的错误

你的错误来自Date.parse(dt),因为默认的日期模式不能解析你的日期,你需要给它正确的格式,这样它才能理解如何格式化你的日期。例如:

代码语言:javascript
复制
String date = formatter.format(
        new SimpleDateFormat("the pattern which match your string date (dt)").format(dt)
);

但在任何情况下,我都不建议使用SimpleDateFormatDate

项目使用几乎相同的语法向后移植到Java6和7的大部分API功能。在项目中进一步适应了早期的Android (<26)。参见。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50900725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档