Java 在特定位置替换子字符串

Java 在特定位置替换子字符串,java,Java,我想使用字符串将日期替换为2012-11-28 12:00:00。替换方法如下: String date = "2012-11-28 12:30:30"; 工作正常,但如果日期为: String replacedDate = date.replace(date.substring(14, 19), "00:00"); 使用上述方法,结果将为2012-11-28 00:00:28,但我希望输出为2012-11-28 18:00:00。您不需要使用字符串。在此处替换方法。如果您知道要替换的确切索

我想使用
字符串将日期替换为
2012-11-28 12:00:00
。替换方法如下:

String date = "2012-11-28 12:30:30";
工作正常,但如果日期为:

String replacedDate = date.replace(date.substring(14, 19), "00:00");

使用上述方法,结果将为
2012-11-28 00:00:28
,但我希望输出为
2012-11-28 18:00:00

您不需要使用
字符串。在此处替换
方法。如果您知道要替换的确切索引,并且确信它们始终相同,则可以使用子字符串和字符串串联:

String date = "2012-11-28 18:18:18";
在线查看它的工作情况:

注意:如果您的字符串实际上是一个日期,请考虑使用一个变量<代码>日期>代码>而不是<代码>字符串< /代码>。< /P> < P>这是一个日期/时间。通过将上述内容解析为合适的日期/时间对象并使用与日期/时间相关的方法对其进行操作,将其视为适当的对象。这样,您就不必依赖substrig/regexp等,也不会冒创建无效日期/时间引用的风险

e、 g.使用和或获取更直观、更健壮的API


目前,您使用的是严格类型系统,而不是强类型系统。

您可以使用忽略分秒的日期分析器,而不是直接操作字符串:

String date = "2012-11-28 12:30:30";
date = date.substring(0, 14) + "00:00";

奖励:如果日期不是预期的格式,您将得到一个有用的异常

您也可以先请求第一个“:”,然后添加“00:00”


我认为您的解决方案不起作用,因为replace方法具有此签名

String date="2012-11-28 18:18:18";
int i = date.indexOf(':');
String format = date.substring(0,i+1) + "00:00";
不是


这个答案意在理解问题,解决问题,考虑其他伟大的答案! 如何将字符串解析为日期,对日期对象执行操作并将其转换回字符串?@KARASZIIstván我提交我的时没有看到您的编辑!
String date="2012-11-28 18:18:18";
int i = date.indexOf(':');
String format = date.substring(0,i+1) + "00:00";
public String replace(char oldChar, char newChar)
public String replace(String oldChar, String newChar)