【日期-时间】Java中Calendar的使用
* 时间格式化* 当前时间:2016-12-02 16:46:27.079** 转换:String-->Date-->Calendar* 设置时间(方式1):2014-08-01 09:18:34.123* 设置时间(方式2):2016-12-01 19:08:54.123** ----YEAR-MONTH----* YEAR:2016* MONTH:11* ----Day-----* 本月第几天:1* 本周几:5* 今年的第 N天 :336* DAY_OF_WEEK_IN_MONTH:1* ----Hour-----* Hour:7* HOUR_OF_DAY:19* ----MINUTE-----* MINUTE:8** 向后推迟一个月(方式1):2017-01-01 19:08:54.123* 向后推迟一个月(方式2):2017-02-01 19:08:54.123* 向后推迟一小时(方式1):2017-02-01 20:08:54.123* 向前推迟一小时(方式2):2017-02-01 19:08:54.123* 设置为30分钟:2017-02-01 19:30:00.123** 开始时间:2014-12-15 16:46:27.116,毫秒数:1418633187116* 结束时间:2016-12-05 12:15:35.117,毫秒数:1480911335117* 相差天数:721** 本月最大天数:31
程序
package com.sssppp.DateTime;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;public class CalendarExample {public static void main(String[] args) {Calendar cal = Calendar.getInstance();System.out.println("时间格式化");SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");System.out.println("当前时间:" + sdf.format(cal.getTime()));System.out.println();try {System.out.println("转换:String-->Date-->Calendar");cal.setTime(sdf.parse("2014-8-1 9:18:34.123"));System.out.println("设置时间(方式1):" + sdf.format(cal.getTime()));} catch (ParseException e) {e.printStackTrace();}//2016-12-01 19:08:54cal.set(2016, Calendar.DECEMBER, 1, 19, 8, 54);System.out.println("设置时间(方式2):" +sdf.format(cal.getTime()));System.out.println();System.out.println("----YEAR-MONTH----");System.out.println("YEAR:" + cal.get(Calendar.YEAR));System.out.println("MONTH:" + cal.get(Calendar.MONTH));System.out.println("----Day-----");System.out.println("本月第几天:" + cal.get(Calendar.DAY_OF_MONTH));System.out.println("本周几:" + cal.get(Calendar.DAY_OF_WEEK));System.out.println("今年的第 N天 :" + cal.get(Calendar.DAY_OF_YEAR));System.out.println("DAY_OF_WEEK_IN_MONTH:"+ cal.get(Calendar.DAY_OF_WEEK_IN_MONTH));System.out.println("----Hour-----");System.out.println("Hour:" + cal.get(Calendar.HOUR));System.out.println("HOUR_OF_DAY:" + cal.get(Calendar.HOUR_OF_DAY));System.out.println("----MINUTE-----");System.out.println("MINUTE:" + cal.get(Calendar.MINUTE));System.out.println();cal.set(Calendar.MONTH,cal.get(Calendar.MONTH)+1);System.out.println("向后推迟一个月(方式1):" + sdf.format(cal.getTime()));cal.add(Calendar.MONDAY, 1);System.out.println("向后推迟一个月(方式2):" + sdf.format(cal.getTime()));cal.set(Calendar.HOUR,cal.get(Calendar.HOUR)+1);System.out.println("向后推迟一小时(方式1):" + sdf.format(cal.getTime()));cal.add(Calendar.HOUR, -1);System.out.println("向前推迟一小时(方式2):" + sdf.format(cal.getTime()));cal.set(Calendar.MINUTE,30);cal.set(Calendar.SECOND,00);System.out.println("设置为30分钟:" + sdf.format(cal.getTime()));cal.getTimeInMillis();System.out.println();Calendar calStart = Calendar.getInstance();calStart.set(2014, Calendar.DECEMBER, 15);System.out.println("开始时间:" + sdf.format(calStart.getTimeInMillis())+ ",毫秒数:" + calStart.getTimeInMillis());Calendar calEnd = Calendar.getInstance();calEnd.set(2016, Calendar.DECEMBER, 5, 12, 15, 35);System.out.println("结束时间:" + sdf.format(calEnd.getTimeInMillis())+ ",毫秒数:" + calEnd.getTimeInMillis());int day =getDaysBetween(calEnd,calStart);System.out.println("相差天数:" + day);//计算某一月份的最大天数System.out.println();Calendar time=Calendar.getInstance();time.clear(); // 在使用set方法之前,必须先clear一下,否则很多信息会继承自系统当前时间time.set(Calendar.YEAR, 2016);int dayCount = time.getActualMaximum(Calendar.DAY_OF_MONTH);// 本月份的天数System.out.println("本月最大天数:" + dayCount);}/*** 计算两个时间之间相隔天数(不够精确)** @param startday* 开始时间* @param endday* 结束时间* @return*/public static int getIntervalDays(Calendar startday, Calendar endday) {// 确保startday在endday之前if (startday.after(endday)) {Calendar cal = startday;startday = endday;endday = cal;}// 分别得到两个时间的毫秒数long sl = startday.getTimeInMillis();long el = endday.getTimeInMillis();long ei = el - sl;// 根据毫秒数计算间隔天数return (int) (ei / (1000 * 60 * 60 * 24));}/*** 计算两个时间之间相隔天数(不够精确)** @param startday* 开始时间* @param endday* 结束时间* @return*/public int getIntervalDays(Date startday, Date endday) {// 确保startday在endday之前if (startday.after(endday)) {Date cal = startday;startday = endday;endday = cal;}// 分别得到两个时间的毫秒数long sl = startday.getTime();long el = endday.getTime();long ei = el - sl;// 根据毫秒数计算间隔天数return (int) (ei / (1000 * 60 * 60 * 24));}/*** 精确计算两个日期之间的天数** @param d1* @param d2* @return*/public static int getDaysBetween(Calendar d1, Calendar d2) {if (d1.after(d2)) { // swap dates so that d1 is start and d2 is endjava.util.Calendar swap = d1;d1 = d2;d2 = swap;}int days = d2.get(Calendar.DAY_OF_YEAR) - d1.get(Calendar.DAY_OF_YEAR);int y2 = d2.get(Calendar.YEAR);if (d1.get(Calendar.YEAR) != y2) {d1 = (Calendar) d1.clone();do {days += d1.getActualMaximum(Calendar.DAY_OF_YEAR);// 得到当年的实际天数d1.add(Calendar.YEAR, 1);} while (d1.get(Calendar.YEAR) != y2);}return days;}}
【日期-时间】Java中Calendar的使用的更多相关文章
- Java中Calendar.DAY_OF_WEEK、DAY_OF_MONTH需要减一的原因
Java中对日期的处理需要用到Calendar类,其中有几个方法在使用时需要新手注意.1. 在获取月份时,Calendar.MONTH + 1 的原因(Java中Calendar.MONTH返回的数值 ...
- Java中Calendar.DAY_OF_WEEK需要减一的原因
http://blog.sina.com.cn/s/blog_45c06e600100pm77.html ——————————————————————————————————————————————— ...
- java中Calendar.getInstance()和new Date()的差别是什么?
java中Calendar.getInstance()和new Date()的差别如下: Calendar.getInstance()是获取一个Calendar对象并可以进行时间的计算,时区的指定ne ...
- Java中Calendar(日历)相关API举例
Java中Calendar(日历)相关API举例,实现功能:输入一个年份和月份打印出这个月的日历. package calendarPrint; import java.util.Calendar; ...
- 关于时间,日期,星期,月份的算法(Java中Calendar的用法)(一)
package cn.outofmemory.codes.Date; import java.util.Calendar; import java.util.Date; public class Ca ...
- 关于时间,日期,星期,月份的算法(Java中Calendar的使用方法)
原文:http://www.open-open.com/code/view/1446195787257 package cn.outofmemory.codes.Date; import java.u ...
- 转——JAVA中calendar,date,string 的相互转换和详细用法
package cn.outofmemory.codes.Date; import java.util.Calendar; import java.util.Date; public class Ca ...
- Java 中Calendar、Date、SimpleDateFormat学习总结
在之前的项目中,经常会遇到Calendar,Date的一些操作时间的类,并且总会遇到时间日期之间的格式转化问题,虽然做完了但是总是忘记,记不清楚,每次还都要查找资料.今天总结一下,加深印象. Cale ...
- 巧用Java中Calendar工具类
Java的JDK中提供了一系列好用的util工具类.Calendar就是java.util中用于处理日期的工具类.且该工具类易学易用实用. 工具类Calendar是抽象类. PS:为什么把Calend ...
随机推荐
- 1.jquery的变量赋予方式
1.首先通过将变量赋予 $_ = window.$ _jQuery = window.JQuery 2.将函数赋给两个全局变量 window.jQuery = window.$ = jQuery 3. ...
- Js获取下拉框当前选择项的文本和值
现在有一个Id为AreaId的下拉框,要获取它当前选择项的文本和值有以下方法: <span class="red">* </span> 地 区: ...
- 分享记录我的Linux系统入门学习经验
人生很多事情都是巧合,或者说命中注定.就拿Linux于我来说,大学期间也修了Linux基础这门课,但是从来没有想到自己会从事与Linux相关的工作,更没有想过自己可以通过Linux获取更多的东西. 真 ...
- 用Handler图片轮播练习
XML代码 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:andr ...
- Appcan 3.2 Switch操作
Appcan3.0,有了很多不错的东西,但官方的文档还是那么的不靠谱. 我将记录下,我学习到的东西. 显示2个switch <div class="ub ub-pe"> ...
- Oracle数据库中scott用户不存在的解决方法
SCOTT用户是我们学习Oracle过程中一个非常重要的实验对象,在我们建立数据库的时候,如果是选择定制模式的话,SCOTT用户是不会默认出现的,不过我们可以通过使用几个简单命令来使这个用户出现.以下 ...
- Ubuntu下快速安装LAMP server
Ubuntu下可快速安装LAMP server(Apache+MySQL+PHP5). 首先,打开Ubuntu虚拟机,Terminal打开root权限:“sudo -s”. 一.安装LAMP serv ...
- Libgdx 开发指南(1.3) 应用框架——查询、日志
查询 Application接口提过多种方法查询运行时环境属性. 获得应用类型 有时候根据运行平台需要处理一些具体的逻辑,可以使用 Application.getType() 方法来返回应用所运行的平 ...
- C++学习笔记22:设备
设备类型 设备文件的性质 设备文件不是普通的磁盘文件 读写设备的数据需要与相应的设备驱动器通信 设备文件的类型 字符设备:读写串行数据字节流,如串口.终端等 块设备:随机读写固定尺寸数据块,如磁盘设备 ...
- mybatis 注意问题
<insert id="insertSelective" parameterType="com.hengxin.qianee.model.TalentUser&qu ...