我有一个时间和日期的字符串。 字符串总是这样(但实际日期为。)
2015-01-06T06:36:12Z
我要删除日期(加上T和Z) 要删除T和Z,我可以使用正则表达式删除每个非数字字符,这样就不会有问题。
我的问题是我不知道如何从字符0
删除字符10
- &gt; 2015-01-06T <- I want this removed.
我已经尝试了一些方法,但似乎找不到办法来做到这一点。
答案 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 example和here
使用
开始的简单代码示例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
。删除T
,Z
和日期部分。
答案 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)));