【日期-时间】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:54
cal.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 end
java.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 ...
随机推荐
- sqlite数据类型
sqlite数据类型(时间 日期 double等) sqlite3支持的数据类型: NULL.INTEGER.REAL.TEXT.BLOB但是,sqlite3也支持如下的数据类型smallin ...
- “LC.exe”已退出,代码为 -1
造成这个问题的原因一般是引入了第三方插件,自己遇到的问题是引入了devexpress...... 1.找到Properties文件夹licenses.licx文件,然后右键选择删除就可以了,调试运行正 ...
- H5页面左图右边文字如何布局
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- 运用vertical:middle 使得元素垂直居中
我要垂直居中我要垂直居中我要垂直居中我要垂直居中我要垂直居中垂直居中垂直居中垂直居中中垂直居中垂直居中 <!-- 第一步:主题元素display:inline-block;第二步:插入辅助元 ...
- wdcp 打开网页显示 Apache 2 Test Page powered by CentOS
是因为更新过系统,安装并更新了系统自带的apache 执行这个命令即可 #ln -sf /www/wdlinux/init.d/httpd /etc/rc.d/init.d/httpd#reboot
- CircleImageView
package com.cainiao5.cainiaoheadimg; import android.content.Context;import android.content.res.Typed ...
- c#读取文本文档实践4-读入到list泛型集合计算后写入新文档
商品 数量 单价英语 66 100语文 66 80数学 66 100化学 66 40物理 66 60 上面截图是要处理的文本文档内容,目的是计算出总价并加在最后一列. 这一篇与上一篇比较类似,目的相同 ...
- [CDN]CDN的系统架构
---恢复内容开始--- 1.功能架构: CDN技术自1998年诞生以来,伴随着互联网的高速发展,其技术一直在持续演进和完善,但基本的CDN功能架构在2003年左右就已基本形成和稳定下来.从功能上划分 ...
- DDOS的攻击原理和防护指南(转)
DDOS的攻击原理和防护指南 作者:冰盾防火墙 网站:www.bingdun.com 日期:2008-01-07 我们现在来分析DDOS的攻击原理. 首先,DDOS是英文Distribut ...
- ACM 矩阵题目整理
先从最基础的矩阵快速幂加速递推开始. HDU 1005 Number Sequence |f[n-2],f[n-1]|* |0 B| =|f[n-1], B*f[n-2]+A*f[n-1]|=|f[n ...