引言
想用jmeter获取最近几个月或最近一段时间时间,而Java Calendar 类时间操作,这也许是创建和管理日历最简单的一个方案,示范代码很简单。由此百度到了Java Calendar 类的时间操作的一些文章。
相关原文地址如下:
http://blog.csdn.net/joyous/article/details/9630893
http://chamcon.iteye.com/blog/2144433
调试
在此结合jmeter进行调试:
如想获取“9个月后和4个月前的时间”或“获取50分钟后和50分钟前的时间”,则具体代码如下:
import java.util.Date; import java.text.SimpleDateFormat; import java.text.DateFormat; import java.text.ParseException; import java.util.Calendar; //显示当前时间 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date now = new Date(); System.out.println("当前时间:" + sdf.format(now)); log.info("当前时间为:"+sdf.format(now)); //获取9个月后和4个月前的时间 Calendar nowTime = Calendar.getInstance(); nowTime.add(Calendar.MONTH, 9);//9个月后的时间 log.info("3个月后的时间为:"+sdf.format(nowTime.getTime())); Calendar nowTime2 = Calendar.getInstance(); nowTime2.add(Calendar.MONTH, -4);//4个月前的时间 log.info("3个月前的时间为:"+sdf.format(nowTime2.getTime())); //获取50分钟后和50分钟前的时间 Calendar nowTime = Calendar.getInstance(); nowTime.add(Calendar.MINUTE, 30);//30分钟后的时间 log.info("30分钟后的时间为:"+sdf.format(nowTime.getTime())); Calendar nowTime2 = Calendar.getInstance(); nowTime2.add(Calendar.MINUTE, -30);//30分钟前的时间 log.info("30分钟前的时间为:"+sdf.format(nowTime2.getTime()));
运行结果如下:
扩展
对于Java Calendar 类的时间操作的其他用法也进行了尝试,具体代码如下:
import java.util.Date; import java.text.SimpleDateFormat; import java.text.DateFormat; import java.text.ParseException; import java.util.Calendar;
//显示当前时间 String str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")).format(new Date()); log.info("当前时间为:"+str);
// 创建 Calendar 对象 Calendar calendar = Calendar.getInstance();
// 显示年份 int year = calendar.get(Calendar.YEAR); log.info("year is = " + String.valueOf(year)); // 显示月份 (从0开始, 实际显示要加一) /* * 在获取月份时,Calendar.MONTH + 1 的原因: * Java中的月份遵循了罗马历中的规则:当时一年中的月份数量是不固定的,第一个月是JANUARY。 * 而Java中Calendar.MONTH返回的数值其实是当前月距离第一个月有多少个月份的数值,JANUARY在Java中返回“0”,所以我们需要+1。 */ int month = calendar.get(Calendar.MONTH); log.info("month is = " + (month+1)); // 本周几 (实际显示要-1) /* * 在获取星期几 Calendar.DAY_OF_WEEK – 1 的原因: * Java中Calendar.DAY_OF_WEEK其实表示:一周中的第几天,所以他会受到 第一天是星期几 的影响。 * 有些地区以星期日作为一周的第一天,而有些地区以星期一作为一周的第一天,这2种情况是需要区分的。 看下表的返回值 */ //一周第一天是否为星期天 boolean isFirstSunday = (calendar.getFirstDayOfWeek() == Calendar.SUNDAY); //获取周几 int weekDay = calendar.get(Calendar.DAY_OF_WEEK); //若一周第一天为星期天,则-1 if(isFirstSunday){ weekDay = weekDay - 1; if(weekDay == 0){ weekDay = 7; } } log.info("weekDay is = " + (weekDay)); // 今年的第 N 天 int DAY_OF_YEAR = calendar.get(Calendar.DAY_OF_YEAR); log.info("DAY_OF_YEAR is = " + DAY_OF_YEAR); // 本月第 N 天 int DAY_OF_MONTH = calendar.get(Calendar.DAY_OF_MONTH); log.info("DAY_OF_MONTH = " + String.valueOf(DAY_OF_MONTH)); // 3小时以后 calendar.add(Calendar.HOUR_OF_DAY, 3); int HOUR_OF_DAY = calendar.get(Calendar.HOUR_OF_DAY); log.info("HOUR_OF_DAY + 3 = " + HOUR_OF_DAY); // 当前分钟数 int MINUTE = calendar.get(Calendar.MINUTE); log.info("MINUTE = " + MINUTE); // 15 分钟以后 calendar.add(Calendar.MINUTE, 15); MINUTE = calendar.get(Calendar.MINUTE); log.info("MINUTE + 15 = " + MINUTE); // 30分钟前 calendar.add(Calendar.MINUTE, -30); MINUTE = calendar.get(Calendar.MINUTE); log.info("MINUTE - 30 = " + MINUTE); // 格式化显示 str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendar.getTime()); log.info(str); // 重置 Calendar 显示当前时间 calendar.setTime(new Date()); str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendar.getTime()); log.info(str); // 创建一个 Calendar 用于比较时间 Calendar calendarNew = Calendar.getInstance(); // 设定为 5 小时以前,后者大,显示 -1 calendarNew.add(Calendar.HOUR, -5); log.info("时间比较:" + calendarNew.compareTo(calendar)); // 设定7小时以后,前者大,显示 1 calendarNew.add(Calendar.HOUR, +7); log.info("时间比较:" + calendarNew.compareTo(calendar)); // 退回 2 小时,时间相同,显示 0 calendarNew.add(Calendar.HOUR, -2); log.info("时间比较:" + calendarNew.compareTo(calendar));
运行结果如下:
