我希望我的程序能够连接字符串变量(Date-> int-> String),但在我要合并的字符串之间有一个减号( - )。例如:StringA + "-" + StringB
或StringA.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。
答案 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()%>"
特别感谢那些“帮助”我做出弊端的人。