来自int concat的Java字符串,带减号

时间:2016-04-22 08:25:19

标签: java string

我希望我的程序能够连接字符串变量(Date-> int-> String),但在我要合并的字符串之间有一个减号( - )。例如:StringA + "-" + StringBStringA.concat("-").concat(StringB)。但如果String a="100"StringB="200"操作会返回“-100”而不是“200-100”。 为什么是这样? String以某种方式将字符串转换为int然后执行数学运算吗?没意义。

代码:

DateTime dt = new DateTime();
int sYear = dt.getYear();
int sMonth = dt.getMonthOfYear();
String minDate = null;
String y = Integer.toString(sYear);
String m = Integer.toString(sMonth);
minDate = y + "-" + m + "-01"; //or y.concat("-").concat(m).concat("-01");

我上面的例子返回1715。

2 个答案:

答案 0 :(得分:1)

虽然你绝对应该关注@Tinaki关于如何格式化Date的建议,但我认为真正的问题在于其他地方。

System.out.println("03".concat("-").concat("10").concat("-01"));

此处输出为03-10-01 -8(您的示例会提供类似的输出)。

您在其中一条评论中提到过:

  

我必须将值传递给Javascript表单作为字符串。

我想这就是真正的问题所在。例如,如果生成的 JavaScript 最终看起来像这样:

var myDate = 2016-03-01 ;

将评估表达式,myDate将以值2012的数字结尾。你必须确保你传递一个字符串而不是一个数字。

答案 1 :(得分:0)

正确的答案是: 爪哇

LocalDate today = LocalDate.now();
LocalDate prevMonthFirstDay = today.minusMonths(1).withDayOfMonth(1);
LocalDate prevMonthLastDay = prevMonthFirstDay.plusMonths(1).minusDays(1);

的Javascript

var f = document.forms['SearchForm'];
f.startdate.value = "<%=prevMonthFirstDay.toString()%>"
f.enddate.value = "<%=prevMonthLastDay.toString()%>"

特别感谢那些“帮助”我做出弊端的人。