我有一个包含日期的字符串,例如“01-01-2012”,然后是空格,然后是时间“01:01:01”。完整的字符串是:“01-01-2012 01:01:01”
我想从这个字符串中只提取日期,所以最后我会有“01-01-2012”,但不知道该怎么做。
答案 0 :(得分:38)
四个选项(为了使这一个答案添加的最后两个选项包括其他人给出的选项):
SimpleDateFormat
)使用indexOf
查找第一个空格,并使用substring
获取前导子字符串:
int spaceIndex = text.indexOf(" ");
if (spaceIndex != -1)
{
text = text.substring(0, spaceIndex);
}
相信它以指定的格式有效,并且第一个空格将始终位于索引10处:
text = text.substring(0, 10);
按空格拆分字符串然后取第一个结果(对我来说似乎效率不高,但它会起作用......)
text = text.split(" ")[0];
如果不是空格,你应该考虑你想要发生什么。这是否意味着数据开始时无效?你应该继续使用整个字符串吗?这取决于你的情况。
我个人可能会选择第一个选项 - 你真的想解析“01-01-2012 wibble-wobble bad data”,好像它是一个有效的日期/时间吗?
答案 1 :(得分:13)
String input = "01-01-2012 01:01:01";
String date = d.split(" ")[0];
答案 2 :(得分:6)
试试这个:
String date = s.substring(0, s.indexOf(" "));
或者甚至(因为长度是固定的):
String date = s.substring(0, 10);
或使用StringUtils.substringBefore()
:
String date = StringUtils.substringBefore(s, " ");
答案 3 :(得分:2)
有很多方法可以做到这一点,一个非常简单的方法是在空格处拆分String并使用第一部分(这将是日期):
String dateTime = "01-01-2012 01:01:01";
String date = dateTime.split(" ")[0];
答案 4 :(得分:1)
您可以使用String.split()
并仅在结果中String
采用相关String[]
[在您的示例中,它将是myString.split(" ")[0]
答案 5 :(得分:1)
在字符串中只有一个空格的情况下,您可以使用String.split(" ")
。但这是一种不好的做法。你应该用DateFormat解析日期
答案 6 :(得分:1)
您可以使用substring仅提取日期:
String thedatetime = "01-01-2012 01:01:01";
String thedateonly = thedate.substring(0, 10);
你应该仔细阅读字符串的javadoc,以便了解可用的函数。
答案 7 :(得分:1)
如果您事先知道这是字符串的格式,我会这样做:
public String getDateOnly(String fullDate){
String[] spl = fullDate.split(" ");
return spl[0];
}
答案 8 :(得分:1)
您可以使用字符串操作API:
String datetime = "01-01-2012 01:01:01";
int spacePos = datetime.indexOf(" ");
if (spacePos > 0) {
String date = datetime.substring(0, spacePos - 1);
}
或使用正则表达式:
Pattern p = Pattern.compile("(\\d{2}-\\d{2}-\\d{4})");
String datetime = "01-01-2012 01:01:01";
Matcher m = p.matcher(datetime);
if(m.find()) {
String date = m.group(1);
}
或使用SimpleDateFormat
DateFormat fmt = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
Date date = fmt.parse(datetime);
Calendar c = Calendar.getInstance();
c.setTime(date);
String date = c.getDayOfMonth() + "-" + c.getMonth() + "-" + c.getYear();
答案 9 :(得分:0)
使用String.substring(int, int)
。如果您对日期和时间的值感兴趣,请使用SimpleDateFormatter
来解析字符串。
答案 10 :(得分:0)
myString.substring(0,10);
如果您的字符串始终采用该格式(2位数,减号,2位数,减号,4位数,空格等...),那么您可以使用substring(int beginIndex, int endIndex)
字符串方法来获得所需内容。<登记/>
请注意,第二个参数是返回子字符串后字符的索引。
答案 11 :(得分:0)
如果要从字符串中分解完整日期,请使用此方法。
/**
* @param dateTime format string
* @param type type of return value : "date" or "time"
* @return String value
*/
private String getFullDate(String dateTime, String type) {
String[] array = dateTime.split(" ");
if (type == "time") {
System.out.println("getDate: TIME: " + array[1]);
return array[1];
} else if (type == "date") {
System.out.println("getDate: DATE: " + array[0]);
return array[0];
} else {
System.out.println("NULL.");
return null;
}
}
否则,如果您只需要解释日期 01 -01-2012
使用它:
/**
* @param datetime format string
* @return
*/
private String getOnlyDate(String datetime) {
String array[] = datetime.split("-");
System.out.println("getDate: DATE: " + array[0]);
return array[0];
}
我希望我的回答会对你有帮助。