将字符从一个点移到另一个点

时间:2015-01-06 10:20:38

标签: java string

我有一个时间和日期的字符串。 字符串总是这样(但实际日期为。)

  

2015-01-06T06:36:12Z

我要删除日期(加上T和Z) 要删除T和Z,我可以使用正则表达式删除每个非数字字符,这样就不会有问题。

我的问题是我不知道如何从字符0删除字符10 - &gt; 2015-01-06T <- I want this removed. 我已经尝试了一些方法,但似乎找不到办法来做到这一点。

6 个答案:

答案 0 :(得分:2)

Java 8引入了各种日期函数,在解析格式时,可以找到一篇很棒的文章here。引入的一个类是DateTimeFormatter,与...相比,它有一个很大的上升空间。 SimpleDateFormatter - DateTimeFormatter是线程安全的

所以,我可能不会使用答案中提到的substring方法。相反,我会使用DateTimeFormatter来解析字符串,然后以所需的格式输出它。这也提供了一些验证,输入格式符合预期,输出格式也有效。

示例:

@Test
public void test() throws IOException, ParseException {
    // Setup the input formatter
    final DateTimeFormatter inputFormatter = 
            DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss'Z'");

    // Parse and validate the date
    final LocalDateTime parsed =
            LocalDateTime.parse("2015-01-06T06:36:12Z", inputFormatter);

    // Setup the output formatter
    final DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("HH:mm:ss");

    // Format the date to the desired format
    String formatted = outputFormatter.format(parsed);

    // Verify the contents (part of test only)
    Assert.assertEquals("06:36:12", formatted);
}

Java 8中的新日期和时间功能受Joda-Time的启发,而this SO-question对于那些好奇的差异是好的阅读。

答案 1 :(得分:1)

如果你只想删除“从字符0到字符10”,那么你可以简单地使用String类的substring(int beginIndex)函数。

String date = "2015-01-06T06:36:12Z"
String newString = date.substring(11);
// newString will be "06:36:12Z"

您必须将值11传递给substring()函数,因为您希望新字符串是给定的日期,从第11个字符到结尾。

答案 2 :(得分:0)

使用SmpleDateFormat,还有其他库也可用于时间和日期。但是如果您有一些包含日期和时间信息的特定类型的字符串,那么您必须从代码中手工解析它们。  See and examplehere

使用

开始的简单代码示例
Date date = new Date(); 
SimpleDateFormat sdf; 
sdf = new SimpleDateFormat("hh:mm:ss"); 
System.out.println(sdf.format(date)); 

答案 3 :(得分:0)

您可以使用子字符串:

System.out.println("2015-01-06T06:36:12Z".substring(11,19));

答案 4 :(得分:0)

\T\.\w+_fn\Z此正则表达式为您提供06:36:12。删除TZ和日期部分。

答案 5 :(得分:0)

怎么样:

String input ="2015-01-06T06:36:12Z";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
SimpleDateFormat sdf2 = new SimpleDateFormat("HH:mm:ss");
System.out.println(sdf2.format(sdf.parse(input)));