我将以这种格式获得约会:
2011-05-23 6:05:00
如何从此字符串中仅获取2011-05-23?
答案 0 :(得分:6)
你可以只取第一个空格的索引并使用substring
:
int firstSpace = text.indexOf(' ');
if (firstSpace != -1)
{
String truncated = text.substring(0, firstSpace);
// Use the truncated version
}
如果没有空格,你需要弄清楚你想做什么。
但是,如果它是特定格式的有效日期/时间并且您知道格式,我会用 格式解析它,然后只使用日期组件。 Joda Time可以很容易地只使用日期部分 - 而且是一个通常更好的API。
编辑:如果您的意思是您已经 拥有Date
个对象并且您尝试以特定方式对其进行格式化,那么SimpleDateFormat
就是您的朋友Java API - 但同样,我建议使用Joda Time及其DateTimeFormatter
类:
DateTimeFormatter formatter = ISODateTimeFormat.date();
String text = formatter.print(date);
答案 1 :(得分:4)
parser = new SimpleDateFormat("yyyy-MM-dd k:m:s", locale);
Date date;
try {
date = (Date)parser.parse("2011-05-23 6:05:00");
} catch (ParseException e) {
}
formatter = new SimpleDateFormat("yyyy-MM-dd");
s = formatter.format(date);
此外:
答案 2 :(得分:1)
答案 3 :(得分:1)
您可以使用 -
String arg="2011-05-23 6:05:00";
String str=arg.substring(0,arg.indexOf(" "));
答案 4 :(得分:0)
一个无效但蛮力的方法就是说
String s = "2011-05-23 6:05:00";
String t = s.substring(0,s.length-7);
或者不管是什么情况
答案 5 :(得分:0)
str = "2011-05-23 6:05:00"
str = str.substring(0,str.indexOf(" "));
答案 6 :(得分:0)
最简单的方法:
String str =“2011-05-23 6:05:00”; str = str.subString(0,10);
答案 7 :(得分:0)
很多答案,但到目前为止还没有人使用正则表达式,所以我只需要用regexp发布答案。
String date = "2011-05-23 6:05:00";
System.out.println(date.replaceFirst("\\s.*", ""));
答案 8 :(得分:0)
你走了:
import java.*;
import java.util.*;
import java.text.*;
public class StringApp {
public static void main(String[] args)
{
String oldDate = "2011-05-23 6:05:00";
String dateFormat = "yyyy-MM-dd";
try {
SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
Calendar cl = Calendar.getInstance();
cl.setTime(sdf.parse(oldDate));
String newDate = sdf.format(cl.getTime());
System.out.println(newDate);
}
catch (ParseException ex) {
}
}
}
答案 9 :(得分:0)
使用正则表达式的另一个答案。
String dateTime = "2011-05-23 6:05:00";
String date = dateTime.split(" ")[0];