【问题标题】:How to get date from a string without formatting? [duplicate]如何在不格式化的情况下从字符串中获取日期? [复制]
【发布时间】:2021-02-13 15:32:25
【问题描述】:

我有一个

String s = "2020-02-22"`;

我想将其更改为Date,以便可以将其存储在我的数据库中,该数据库有一个除Date 之外不接受任何内容的列。

我尝试使用 LocalDate 类,但它在 API 26 中。 任何帮助将不胜感激。

【问题讨论】:

  • 你试过java.util.Date吗?
  • @GauthamM 是的,我用 simpleDateFormat 尝试过,但它会格式化日期,但我希望我的日期与我的字符串一样
  • 您的意思是希望日期也以yyyy-MM-dd 格式存储在数据库中?
  • @GauthamM 不,我希望它像字符串“2020-02-22”一样存储
  • myPreparedStatement.setObject( … , LocalDate.parse( "2020-02-22" ) ) ;

标签: java android date date-parsing java.util.date


【解决方案1】:

假设您从数据库中获取日期并将其传递给以下方法:

public String formatDate(Date date){
    SimpleDateFormat ff = new SimpleDateFormat("yyyy-MM-dd");           
    return ff.format(date);
}

编辑:根据Basil 的输入,您可以尝试Android Desugaring 来使用Java 8+ 功能,而无需最低API 级别。这将允许使用LocalDate 而不是旧的java.util.Date 类。 使用LocalDate,您可以将一个字符串解析为:

public LocalDate getDate(String dateString) {
    return LocalDate.parse(dateString);
}

【讨论】:

  • 仅供参考:这些糟糕的类在几年前被 JSR 310 中定义的现代 java.time 类所取代。在 2021 年建议这些遗留类是糟糕的建议。
  • @BasilBourque 是的,但从问题来看,似乎正在使用旧版本。
  • 最新的 Android 工具通过“API 脱糖”将大部分 java.time 功能带入旧版本的 Android。
  • @BasilBourque 根据评论更新了答案
猜你喜欢
  • 2023-03-31
  • 1970-01-01
  • 2018-03-13
  • 2012-08-20
  • 2012-06-18
  • 1970-01-01
  • 2013-09-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多