String date = "2012-11-28 12:30:30";
我想使用2012-11-28 12:00:00
方法将日期替换为String.replace
:
String replacedDate = date.replace(date.substring(14, 19), "00:00");
工作正常,但如果日期是:
String date = "2012-11-28 18:18:18";
使用上述方法,结果将为2012-11-28 00:00:28
,但我希望输出为2012-11-28 18:00:00
。
答案 0 :(得分:5)
您无需在此处使用String.replace
方法。如果您知道要替换的确切索引,并且您确定它们将始终相同,那么您可以使用子字符串和字符串连接:
String date = "2012-11-28 12:30:30";
date = date.substring(0, 14) + "00:00";
查看在线工作:ideone
注意:如果您的字符串确实代表日期,请考虑使用Date
类型的变量而不是String
。
答案 1 :(得分:4)
您可以使用忽略分钟和秒的Date解析器,而不是直接操作字符串:
String s = "2012-11-28 12:30:30";
//skip the minutes, seconds
Date date = new SimpleDateFormat("yyyy-MM-dd HH").parse(s);
String result = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
System.out.println("result = " + result);
奖励:如果日期不是预期格式,您将获得有用的例外
答案 2 :(得分:1)
这是一个日期/时间。 将其视为,将上述内容解析为合适的日期/时间对象,并使用与日期/时间相关的方法对其进行操作。这样您就不必依赖substrig / regexp等,也不会冒着创建无效日期/时间参考的风险。
e.g。使用SimpleDateFormat和Calendar或Joda-Time来获得更直观,更健壮的API。
目前,您有一个字符串型系统,而不是强型系统。
答案 3 :(得分:0)
你也可以要求第一个':'并添加“00:00”然后
String date="2012-11-28 18:18:18";
int i = date.indexOf(':');
String format = date.substring(0,i+1) + "00:00";
答案 4 :(得分:0)
我认为您的解决方案不起作用,因为替换方法具有此签名
public String replace(char oldChar, char newChar)
不
public String replace(String oldChar, String newChar)
这个答案是为了解问题,解决问题,考虑其他好的答案!