【问题标题】:Parse the String to Date and format将字符串解析为日期和格式
【发布时间】:2019-12-17 15:57:07
【问题描述】:

在片段中,我有一个 DatePickerDialog.OnDateSetListener。如果我选择一个日期,我会以字符串的形式将它发送给演示者。然后我想在 Presenter 中将 String 解析为 Date 并在保存到数据库之前更改 Date 的格式。

保存演示者:

 @Override
public void addTaskClick(String text, String date, String time, boolean status) {
    SimpleDateFormat format = new SimpleDateFormat("dd/MM/yy");
    Date updateDate = null;
    try {
        updateDate = format.parse(date);
    } catch (ParseException e) {
        e.printStackTrace();
    }
    Log.e("Save Presenter", updateDate.);
    realmService.addTask(text, updateDate, time, status, this);
}

这就是我现在所拥有的:E/Save 演讲者:2019 年 12 月 17 日星期二 00:00:00 GMT+01:00 我想要这个:2019 年 17 月 12 日 或类似的东西。我需要它将保存的日期与当前日期进行比较,以按日期对任务进行排序。 我也试过 DateFormat 但结果是一样的。

【问题讨论】:

  • 不要将日期作为字符串保存在数据库中,保持较长的时间戳。如果您保持较长的时间戳,一个简单的数据库 order_by 将为您提供基于日期的排序,因此无需编写任何额外的比较器/可比较器来按日期对内容进行排序。这个问题的答案使用了房间(不是领域),但它仍然应该让你对你需要做什么有一个好主意:stackoverflow.com/questions/58247286/…
  • 我不知道。感谢您的有趣课程。
  • @schrodingers_cat16 如果我需要比较例如天数怎么办?我的意思是:如果我通过 DatePicker 保存日期,则有日、月、年等,但没有时间,然后我想将其与当前日期进行比较并且有时间?如何从数据库中获取时间戳并接收一天或一个月但没有时间?
  • 您始终可以使用 new Date(timestamp) 将较长的时间戳转换为带有日、月、年的日期。

标签: android android-date


【解决方案1】:

SimpleDateFormat("dd/MM/yy"); 不会做这个伎俩,而是尝试SimpleDateFormat("yyyy-MM-dd'T' HH:mm:ss.SSSZ");

您需要在所需格式上指定日期

取自SimpleDateFormat

【讨论】:

    【解决方案2】:

    您正在将日期解析为另一个 Date。将其解析为String,然后检查日志。您应该会看到所需的输出。

    【讨论】:

    • 但我需要它作为日期,而不是字符串。在字符串中,我不能按日期从数据库中获取任务。如果我想以字符串的形式处理明天的所有任务,我不能。
    • 我相信,当您打印updateDate 时,它会为您提供正确的结果。如果您注意到,您将获得与您想要的相同的输出。稍后当您比较 updateDate 时,它会为您提供所需的输出。
    • 不,因为如果我创建今天的任务,在日志中我会看到日期和时间,我不需要它。我需要比较天而不是时间。
    【解决方案3】:

    Log.e("Save Presenter", format.format(updateDate)); 将以所需格式打印日期以登录。 这是你想要的吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-14
      • 2016-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-23
      • 1970-01-01
      相关资源
      最近更新 更多