【问题标题】:LocalDate - How to remove character 'T' in LocalDateLocalDate - 如何在 LocalDate 中删除字符“T”
【发布时间】:2016-01-25 01:33:12
【问题描述】:

如何在我的 localDate 中删除 T?

我需要删除“T”以匹配数据库中的数据。

这是我的代码

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss", Locale.US);

String strLocalDate = patientDiagnosisByDoctor.getDiagnosisDateTime().toLocalDateTime().toString();

LocalDateTime localDate = LocalDateTime.parse(strLocalDate, formatter);

System.out.println(localDate);

我得到了这个输出:

2015-10-23T03:34:40

删除“T”字符的最佳方法是什么?有什么想法吗?

【问题讨论】:

  • 使用DateTimeFormat
  • “匹配我数据库中的数据”?您的日期是否存储为VARCHAR????
  • @Andreas 我在 MySQL 中使用日期时间
  • 好吧,那么,除非您通过字符串连接构建 SQL 并让自己容易受到 SQL Injection Attacks 的攻击,否则数据库将永远不会看到或返回带有 T 的值,因为您'在 JDBC 调用中发送/接收 Timestamp 值,所以你的问题没有意义。
  • @Andreas 先生,非常感谢。

标签: java eclipse date java-8


【解决方案1】:

使用 Joda-Time 库的简单选项。

new LocalDateTime(DateTimeZone.forID("Europe/London")).toString().replace("T", " ");

【讨论】:

    【解决方案2】:
        String localTime = "2018-09-13 00:00:00";
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH);
        LocalDateTime date = LocalDateTime.parse(localTime, formatter);
        String replace = date.toString().replace("T", " ");
        System.out.println(replace);
    

    2018-09-13 00:00

    【讨论】:

      【解决方案3】:

      删除“T”字符的最佳方法是什么?有什么想法吗?

      使用DateTimeFormatter 以您想要的方式格式化LocalDateTime 的值...

      DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss", Locale.US);
      
      String strLocalDate = "2015-10-23T03:34:40";
      
      LocalDateTime localDate = LocalDateTime.parse(strLocalDate, formatter);
      
      System.out.println(localDate);
      System.out.println(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(localDate));
      System.out.println(DateTimeFormatter.ofPattern("HH:mm:ss yyyy-MM-dd ").format(localDate));
      

      哪些打印...

      2015-10-23T03:34:40
      2015-10-23 03:34:40
      03:34:40 2015-10-23 
      

      请记住,日期/时间对象只是自固定时间点(如 Unix 纪元)以来经过的时间量的容器,它们没有自己的内部/可配置格式,它们倾向于使用当前语言环境的格式。

      相反,当您想要显示日期/时间值时,您应该首先使用 DateTimeFormatter 将日期/时间值格式化为您想要的任何格式并显示它

      我需要删除“T”以匹配数据库中的数据。

      哎呀,错过了那部分。

      在这种情况下,您应该将日期/时间值转换为使用 java.sql.Timestamp 并使用 PreparedStatement 插入/更新它们

      【讨论】:

      • 关于如何删除尾随 '.0' 的任何想法? 2015-10-23 03:34:40.0
      • substring(),但是你从哪里得到这个值?到目前为止,没有任何东西可以做到这一点。
      • 来自 sql.timestamp,没关系,MySQL 没有检测到这一点。谢谢楼主
      • 仅供参考:您通常会更改格式,但在您的情况下,您不需要它,您需要使用 Timestamp 并让数据库担心它
      • @Andreas 为什么不只是更改格式说明符,请注意,要在数据库中插入值,您只需要使用 Timestamp 并让数据库担心:P
      猜你喜欢
      • 2012-02-03
      • 1970-01-01
      • 1970-01-01
      • 2019-12-17
      • 1970-01-01
      • 2020-07-05
      • 2015-03-26
      • 2011-04-12
      相关资源
      最近更新 更多