【问题标题】:Android Dateformatter issue [duplicate]Android Dateformatter问题[重复]
【发布时间】:2018-05-02 19:04:53
【问题描述】:

我试过非常不得不用dateformatter解析字符串到日期,字符串的格式是这样的--- 2018-06-02T00:00:00+11:00 我想将其解析为 Date 类型。

所以我是这样写的

    public Resident(String address, String dob, String email, String postcode, String firstname, String surname, String provider, String familynumber)
    this.address = address;
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
    try{
        dob =  dob + "T00:00:00+11:00";//the dob is a string of "2018-06-02"
        this.dob = sdf.parse(dob);
        sdf.format(this.dob);
    }
    catch (ParseException e) {
        e.printStackTrace();
    }

       ...

但是,如上所示,它生成*-- Fri Jun 01 23:00:00 GMT+10:00 2018* 对我来说,顺序完全错误,我尝试了多种调试方式但徒劳无功。 谁能告诉我出了什么问题??
非常感谢!

【问题讨论】:

  • 这太奇怪了。开裂
  • 你期望什么输出?
  • @cse 正是我要问同样的问题。
  • 如果你能更清楚你的问题
  • 假设这是一个出生日期,我建议你使用LocalDate from java.time。这是一个没有时间和时区的日期,因此您可以摆脱这些麻烦。并在没有显式格式化程序的情况下解析您的字符串,从而使您免于更多麻烦。要在不是很新的 Android 上使用 java.time,您需要 the ThreeTenABP library。 PS 在您的代码中,sdf.format(this.dob); 在您不获取其返回值时似乎是多余的。

标签: java android simpledateformat


【解决方案1】:

没有错。您已成功解析日期。

图中的Fri Jun 01 23:00:00 GMT+10:00 2018是调试器调用this.dob.toString()生成的。

其实在你调试程序的时候,它会隐式调用对象的toString()来显示当前值。 Date对象的toString方法是这样的格式:Fri Jun 01 23:00:00 GMT+10:00 2018,它与SimpleDateFormat无关,就像这样:

【讨论】:

  • 我希望是这样,但是当我通过 Gson 将其转换为 JSON 进行测试时,它仍然会为我生成 Fri Jun 01 23:00:00 GMT+10:00 2018,这显然是不是我想要的
  • @Damon 你问的问题不止一个。解析出了什么问题,怎么格式化,怎么通过Gson翻译成JSON。如果您一次只问一个问题,我们会更容易。你检查GSON - Date format了吗?
  • @OleV.V.抱歉,我认为这只是由于日期格式问题。
  • @Damon 在你发的图片中,日期已经解析成功。下一个流程与SimpleDateFormatter无关!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-31
相关资源
最近更新 更多