繁体   English   中英

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

[英]Java String from int concat with minus sign

我希望我的程序连接字符串变量 (Date->int->String),但在要合并的字符串之间使用减号 (-)。 例如: StringA + "-" + StringBStringA.concat("-").concat(StringB) 但是如果String a="100"StringB="200"操作将返回“-100”而不是“200-100”。 为什么是这样? String 是否以某种方式将 Strings 转换为 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。

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

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

这里的输出将是03-10-01不是-8 (您的示例给出了类似的输出)。

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

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

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

var myDate = 2016-03-01 ;

该表达式将被评估,并且myDate将作为一个值为2012的数字结束。 您必须确保传递的是字符串而不是数字。

正确答案是:Java

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()%>"

特别感谢所有“帮助”我减负的人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM