xiaobaoqiu Blog

Think More, Code Less

Java Tips

总结日常代码出现的问题.

1.获取周一日期

期望根据当前日期获取周一日期.

Date today = CommonDateTimeUtils.parseDate("2014-11-16");   //周日
System.out.println("today = " + today);

Calendar calendar = Calendar.getInstance();
calendar.setTime(today);
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
Date monday = DateUtils.truncate(calendar.getTime(), Calendar.DAY_OF_MONTH);
System.out.println("monday = " + monday);

如上,today是2014-11-16(周日),获取周一的时间,我们期望获取得到2014-11-10(周一),实际周一的时间为2014-11-17(周一).

原因是时间系统默认周日是一周的第一天.我们可以设置周一是一周的第一天.

Date today = CommonDateTimeUtils.parseDate("2014-11-16");   //周日
System.out.println("today = " + today);

Calendar calendar = Calendar.getInstance();
calendar.setFirstDayOfWeek(Calendar.MONDAY);
calendar.setTime(today);
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
Date monday = DateUtils.truncate(calendar.getTime(), Calendar.DAY_OF_MONTH);
System.out.println("monday = " + monday);

2.Velocity String to number

经常在Velocity中将字符串转成数字,比如double或者int,写法如下:

1
2
#set($Integer = 0)
$Integer.parseInt($intString)

大概的理解就是:volocity会把基本数据类型的静态方法转换到velocity里。所以,定义一个int,就能调用Integer中的方法。

注意其中第一句#set($Integer = 0)是必须的。