【问题标题】:Java Regular Expression Truncate Timestamp valueJava 正则表达式截断时间戳值
【发布时间】:2015-07-14 17:42:49
【问题描述】:
Input    : 2007-02-09 00:00:00.0

Expected : 2007-02-09

我们如何使用 Java 正则表达式截断 00:00:00.0

【问题讨论】:

  • 1) 你不需要正则表达式。 2) 你试过什么?
  • 为什么要使用正则表达式。使用SimpleDateFormat
  • 尝试使用正则表达式截断空格后的字符,但我没有得到我的预期
  • input.split("\\s+")[0]

标签: java regex datetime timestamp truncate


【解决方案1】:

你可以的

String a="2007-02-09 00:00:00.0";
String b=a.split("\\s")[0];
System.out.println(b);         // 2007-02-09

Demo

你也可以使用SimpleDateForMat

String a = "2007-02-09 00:00:00.0";
Date myDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(a);
System.out.println(myDate);
String formattedDate = new SimpleDateFormat("yyyy-MM-dd").format(myDate);
System.out.println(formattedDate);        // 2007-02-09

Demo

【讨论】:

  • 谢谢,当我们尝试它产生一个 NullPointerException String publicationDate1 = portfolioDetails.get(4);字符串发布日期 = 发布日期1.split("\\s")[0]; assetPortfolio.put("publicationdate", publicationDate);
  • @Prabu 打印并检查publicationDate1 的值我认为是null
【解决方案2】:

试试这个:

String s = "2007-02-09 00:00:00.0";
System.out.println(s.replaceAll("\\s\\d{2}:\\d{2}:\\d{2}\\.\\d*", ""));

这会将时间部分替换为空,因此您会得到预期的结果。

【讨论】:

    【解决方案3】:

    提示:

    1. 使用indexOf([space])substring(index+1) 方法(不需要正则表达式)。

    如果你一心想使用正则表达式:

    1. String#replaceAll() --> 捕获所有内容,直到空格,然后将所有内容替换为捕获的组。

    【讨论】:

      猜你喜欢
      • 2014-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-18
      • 1970-01-01
      • 1970-01-01
      • 2013-08-06
      • 1970-01-01
      相关资源
      最近更新 更多