日期类Calendar遇到的问题总结
2017-07-06 12:30
92 查看
1.获取月份时候,Calendar.MONTH需要+1
Calendar.MONTH返回的是当前月距离第一个月的差值,而
Java中第一个月
JANUARY是0,所以需要+1
代码:
//创建日期 Date date = new Date(); //显示现在时间 String time = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSSS")).format(date); System.out.println("现在时间: " + time); //创建Calendar对象并设置现在时间 Calendar calendar = Calendar.getInstance(); calendar.setTime(date); System.out.println("1月份返回的是: " + Calendar.JANUARY); System.out.println("返回的月份是: " + calendar.get(Calendar.MONTH)); System.out.println("实际的月份是: " + (calendar.get(Calendar.MONTH) + 1));
结果:
现在时间: 2017-07-06 11:23:19:0954 1月份返回的是: 0 返回的月份是: 6 实际的月份是: 7
2.给Calendar设置固定的时间
2.1.先给Date设置固定时间,再间接给Calendar设置
代码://创建格式化标准 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); try { //设置固定时间,parse返回date类型 Date date = simpleDateFormat.parse("2017-7-6 11:28:33"); Calendar calendar = Calendar.getInstance(); calendar.setTime(date); //按照固定格式显示设置的时间 String time = simpleDateFormat.format(calendar.getTime()); System.out.println(time); } catch (ParseException e) { e.printStackTrace(); }
结果:
2017-07-06 11:28:33
2.2.直接设置年月日时分秒
代码://创建格式化标准 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); Calendar calendar = Calendar.getInstance(); calendar.set(2017, 7 - 1, 6, 11, 28, 33);//注意月份要-1,否则结果会大一个月 //按照固定格式显示设置的时间 String time = simpleDateFormat.format(calendar.getTime()); System.out.println(time);
结果:
2017-07-06 11:28:33
3.获取Calendar的时间参数
3.1.时间参数获取
代码://创建日期 Date date = new Date(); //显示现在时间 String time = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSSS")).format(date); System.out.println("现在时间: " + time); //创建Calendar对象并设置现在时间 Calendar calendar = Calendar.getInstance(); calendar.setTime(date); System.out.println("年: " + calendar.get(Calendar.YEAR)); System.out.println("月: " + (calendar.get(Calendar.MONTH) + 1)); System.out.println("本年第几天: " + calendar.get(Calendar.DAY_OF_YEAR)); System.out.println("本月第几天: " + calendar.get(Calendar.DAY_OF_MONTH));//日 calendar.add(Calendar.HOUR_OF_DAY, 1); System.out.println("1个小时以后: " + calendar.get(Calendar.HOUR)); calendar.add(Calendar.MONTH, -3); System.out.println("3个月之前: " + (calendar.get(Calendar.MONTH) + 1)); //特别注意本周几的获取 System.out.println("周几: " + calendar.get(Calendar.DAY_OF_WEEK)); //计算时差,获取微妙后相减然后换算成时间 Calendar time1 = Calendar.getInstance(); time1.set(2017, 9, 10, 11, 22, 33); Calendar time2 = Calendar.getInstance(); time2.set(2018, 4, 30, 21, 5, 53); long val = time2.getTimeInMillis() - time1.getTimeInMillis(); long day = val / (1000 * 60 * 60 * 24); System.out.println("相差: " + day + "天");
结果:
现在时间: 2017-07-06 12:05:09:0160 年: 2017 月: 7 本年第几天: 187 本月第几天: 6 1个小时以后: 1 3个月之前: 4
3.2.时间差
代码://计算时差,获取微妙后相减然后换算成时间 Calendar time1 = Calendar.getInstance(); time1.set(2017, 9, 10, 11, 22, 33); Calendar time2 = Calendar.getInstance(); time2.set(2018, 4, 30, 21, 5, 53); long val = time2.getTimeInMillis() - time1.getTimeInMillis(); long day = val / (1000 * 60 * 60 * 24); System.out.println("相差: " + day + "天");
结果:
相差: 232天
3.3.要注意本周几的获取需要-1
System.out.println("周几: " + calendar.get(Calendar.DAY_OF_WEEK));
因为国外和中国的习惯不同,有的是以周一为第一天,有些地区是以周日为第一天,所以可能会在意Calendar里的方法
setFirstDayOfWeek
代码:
System.out.println("周几: " + calendar.get(Calendar.DAY_OF_WEEK));calendar.setFirstDayOfWeek(Calendar.MONDAY);
System.out.println("周几: " + calendar.get(Calendar.DAY_OF_WEEK));
结果:
周几: 5 周几: 5
结果还是没有任何变化,查资料得知这个方法影响的不是本周第几天得到的周几,
setFirstDayOfWeek的方法只对
WEEK_OF_MONTH与
WEEK_OF_YEAR有作用,当需要这两个参数的时候还是需要根据当地的习惯设置
setFirstDayOfWeek,或者直接用设置区域。
Locale.setDefault(Locale.CHINA);
而
calendar.get(Calendar.DAY_OF_WEEK)返回的其实就只是个常量,按照
SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY的顺序,返回5表示的就是周四,所以可以通过代码转换一下。
代码:
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1; if (dayOfWeek == 0) dayOfWeek = 7;
相关文章推荐
- 学习ejb并配置一个简单的helloEjb是遇到问题后总结的经验。
- 对近段时间遇到的c问题总结.
- struts中遇到异常问题总结
- 使用jdic过程中遇到的问题总结
- spring 国际化遇到的问题总结
- 在自己学习stuts是遇到问题后总结的经验。
- 事务处理是在数据处理时经常遇到的问题,经常用到的方法有以下3种总结整理如下
- JAVA-近日遇到的java的日期时间类型的几个问题总结
- 在做一个小网站的一些心得与遇到的问题总结,为以后方便查阅。
- 总结最近项目开发中遇到的问题,希望对大家有所帮助!
- Asp.net1.1升级到2.0遇到的一些问题总结
- 总结一下最近将163邮箱拖动效果改成兼容Firefox遇到的问题
- 使用linux过程中遇到的问题总结
- 最近写shell脚本遇到的几点问题总结
- 刚刚遇到的一个问题的总结.
- linux下php安装及连接oracle遇到问题总结
- 项目管理遇到的问题总结
- 项目中遇到的问题总结
- asp.net c#.net项目中使用总结,遇到的各个问题的汇总
- 最近在开发中遇到的问题总结