Calendar使用
来源:互联网 发布:淘宝diy化妆品黑名单 编辑:程序博客网 时间:2024/06/11 14:36
本内容是我在做统计报表时,mysql获取本周上周等相关根据日期查询时,可能会存在某一天日期不存记录时,日期出现遗漏。
所以在查询后根据返回的日期和当前获取的日期"内容比对"后进行添加,如果某天不存在将其他值赋予默认值,以保证日期完整。
1:Calendar 简单使用
2:Calendar 日期加减
3:根据当前周打印某周日期(以天为单位)
4:根据当前月打印某月日期(以天为单位)
5:打印某年(以月份为单位)
6:打印指定范围内的日期(以天为单位)
*/
public static void DateAcquisition() {
System.out.println("-----时间获取-----");
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
System.out.println("获取当前时间:" + sf.format(cal.getTime()));
System.out.println("获取当前时间戳:" + cal.getTimeInMillis());
System.out.println("获取当前是一年中第几天:" + cal.get(Calendar.DAY_OF_YEAR));
System.out.println("获取当前年:" + cal.get(Calendar.YEAR));
System.out.println("获取当前月:" + (cal.get(Calendar.MONTH) + 1));
System.out.println("获取当前日:" + cal.get(Calendar.DAY_OF_MONTH));
System.out.println("获取当前周:" + (cal.get(Calendar.DAY_OF_WEEK) - 1));
System.out.println("获取当前时:" + cal.get(Calendar.HOUR_OF_DAY));
System.out.println("获取当前分:" + cal.get(Calendar.MINUTE));
System.out.println("获取当前秒:" + cal.get(Calendar.SECOND));
}
/**
* 时间加减操作
*/
public static void DateAdditionAndSubtraction() {
System.out.println("-----时间加减-----");
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
System.out.println("时间加减方法:cal.add(Calendar.函数, 负数/正数);/n例如:");
cal.add(Calendar.YEAR, 1);
System.out.println("加一年后的日期:" + sf.format(cal.getTime()));
cal.add(Calendar.YEAR, -1);
System.out.println("减一年后的日期:" + sf.format(cal.getTime()));
cal.add(Calendar.MONTH, 1);
System.out.println("加一月后的日期:" + sf.format(cal.getTime()));
cal.add(Calendar.MONTH, -1);
System.out.println("减一月后的日期:" + sf.format(cal.getTime()));
}
/**
* 根据当前周打印某周日期(以天为单位)
* @param Month : (...;-1:上周;0:本周;1:下周;...)
* @param PrintRule : 是否可以打印今后的日期
* @return List<String>
*/
public static List<String> PrintAWeek(int Month,boolean PrintRule) {
List<String> listStr = new ArrayList<>();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
Calendar constantCal = Calendar.getInstance(); // 获取当前日期,不改变用于判断
Calendar cal = Calendar.getInstance(); // 获取当前日期
cal.add(Calendar.WEEK_OF_MONTH, Month);//控制周
for (int i = 0; i < 7; i++) {
if(PrintRule==false){
if(cal.getTimeInMillis()<=constantCal.getTimeInMillis()){
cal.add(Calendar.DATE, -1 * cal.get(Calendar.DAY_OF_WEEK) + 2 + i);
listStr.add(sf.format(cal.getTime()));
}else{
break;
}
}else{
cal.add(Calendar.DATE, -1 * cal.get(Calendar.DAY_OF_WEEK) + 2 + i);
listStr.add(sf.format(cal.getTime()));
}
}
return listStr;
}
/**
* 根据当前月打印某月日期(以天为单位)
* @param Month : (...;-1:上个月;0:本月;1:下个月;...)
* @param PrintRule : 是否可以打印今后的日期
* @return List<String>
*/
public static List<String> PrintAMonth(int Month,boolean PrintRule) {
List<String> listStr = new ArrayList<>();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
Calendar constantCal = Calendar.getInstance(); // 获取当前日期
Calendar cal = Calendar.getInstance(); // 获取当前日期
cal.add(Calendar.MARCH, Month);// Month控制月份
int count = cal.getActualMaximum(Calendar.DATE)+1;// 获取本月天数,用来遍历
cal.set(Calendar.DAY_OF_MONTH, 1);
for (int i = 1; i < count; i++) {
if(PrintRule==false){
if(cal.getTimeInMillis()<=constantCal.getTimeInMillis()){
listStr.add(sf.format(cal.getTime()));
cal.add(Calendar.DAY_OF_MONTH, 1);// 每次循环+1天
}else{
break;
}
}else{
listStr.add(sf.format(cal.getTime()));
cal.add(Calendar.DAY_OF_MONTH, 1);// 每次循环+1天
}
}
return listStr;
}
/**
* 打印某年(以月份来单位)
* @param Year : 年
* @return List<String>
*/
public static List<String> PrintThisYear(int Year) {
List<String> listStr = new ArrayList<>();
Calendar cal = Calendar.getInstance();
int intYear = Year;// 定义要查询的年份 X年 /
for (int i = 1; i < 13; i++) {// i代表12个月
cal.set(Calendar.YEAR, intYear); // 设置年份为刚才设置的年份
cal.set(Calendar.MONTH, i - 1); // 月份下标从0开始循环到11
cal.set(Calendar.DAY_OF_MONTH, 1);// 获取到月份的值
listStr.add(intYear + "-" + i);
}
return listStr;
}
/**
* 打印指定范围内的日期(以天为单位)
* @param StartDate : 开始日期
* @param EndDate : 结束日期
* @return List<String>
*/
public static List<String> DateOfPrintingTime(String StartDate ,String EndDate) {
List<String> listStr = new ArrayList<>();
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sdf2 = new SimpleDateFormat("MM-dd");
Calendar ca1 = Calendar.getInstance();
Calendar ca2 = Calendar.getInstance();
try {
ca2.setTime(sdf1.parse(StartDate));// 开始日期
ca1.setTime(sdf1.parse(EndDate)); // 截止日期
int days = (int) ((ca1.getTimeInMillis() - ca2.getTimeInMillis()) / 86400000) + 1;// 计算时间差
for (int i = 0; i < days; i++) {
listStr.add(sdf2.format(ca2.getTime()));
ca2.add(ca1.DATE, 1);
}
} catch (ParseException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
return listStr;
所以在查询后根据返回的日期和当前获取的日期"内容比对"后进行添加,如果某天不存在将其他值赋予默认值,以保证日期完整。
(如果哪位知道能够在查询时,某日期不存在记录,依然可以获取日期值,请麻烦告于我知,谢谢!)
1:Calendar 简单使用
2:Calendar 日期加减
3:根据当前周打印某周日期(以天为单位)
4:根据当前月打印某月日期(以天为单位)
5:打印某年(以月份为单位)
6:打印指定范围内的日期(以天为单位)
/**
* 获取日期示例*/
public static void DateAcquisition() {
System.out.println("-----时间获取-----");
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
System.out.println("获取当前时间:" + sf.format(cal.getTime()));
System.out.println("获取当前时间戳:" + cal.getTimeInMillis());
System.out.println("获取当前是一年中第几天:" + cal.get(Calendar.DAY_OF_YEAR));
System.out.println("获取当前年:" + cal.get(Calendar.YEAR));
System.out.println("获取当前月:" + (cal.get(Calendar.MONTH) + 1));
System.out.println("获取当前日:" + cal.get(Calendar.DAY_OF_MONTH));
System.out.println("获取当前周:" + (cal.get(Calendar.DAY_OF_WEEK) - 1));
System.out.println("获取当前时:" + cal.get(Calendar.HOUR_OF_DAY));
System.out.println("获取当前分:" + cal.get(Calendar.MINUTE));
System.out.println("获取当前秒:" + cal.get(Calendar.SECOND));
}
/**
* 时间加减操作
*/
public static void DateAdditionAndSubtraction() {
System.out.println("-----时间加减-----");
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
System.out.println("时间加减方法:cal.add(Calendar.函数, 负数/正数);/n例如:");
cal.add(Calendar.YEAR, 1);
System.out.println("加一年后的日期:" + sf.format(cal.getTime()));
cal.add(Calendar.YEAR, -1);
System.out.println("减一年后的日期:" + sf.format(cal.getTime()));
cal.add(Calendar.MONTH, 1);
System.out.println("加一月后的日期:" + sf.format(cal.getTime()));
cal.add(Calendar.MONTH, -1);
System.out.println("减一月后的日期:" + sf.format(cal.getTime()));
}
/**
* 根据当前周打印某周日期(以天为单位)
* @param Month : (...;-1:上周;0:本周;1:下周;...)
* @param PrintRule : 是否可以打印今后的日期
* @return List<String>
*/
public static List<String> PrintAWeek(int Month,boolean PrintRule) {
List<String> listStr = new ArrayList<>();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
Calendar constantCal = Calendar.getInstance(); // 获取当前日期,不改变用于判断
Calendar cal = Calendar.getInstance(); // 获取当前日期
cal.add(Calendar.WEEK_OF_MONTH, Month);//控制周
for (int i = 0; i < 7; i++) {
if(PrintRule==false){
if(cal.getTimeInMillis()<=constantCal.getTimeInMillis()){
cal.add(Calendar.DATE, -1 * cal.get(Calendar.DAY_OF_WEEK) + 2 + i);
listStr.add(sf.format(cal.getTime()));
}else{
break;
}
}else{
cal.add(Calendar.DATE, -1 * cal.get(Calendar.DAY_OF_WEEK) + 2 + i);
listStr.add(sf.format(cal.getTime()));
}
}
return listStr;
}
/**
* 根据当前月打印某月日期(以天为单位)
* @param Month : (...;-1:上个月;0:本月;1:下个月;...)
* @param PrintRule : 是否可以打印今后的日期
* @return List<String>
*/
public static List<String> PrintAMonth(int Month,boolean PrintRule) {
List<String> listStr = new ArrayList<>();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
Calendar constantCal = Calendar.getInstance(); // 获取当前日期
Calendar cal = Calendar.getInstance(); // 获取当前日期
cal.add(Calendar.MARCH, Month);// Month控制月份
int count = cal.getActualMaximum(Calendar.DATE)+1;// 获取本月天数,用来遍历
cal.set(Calendar.DAY_OF_MONTH, 1);
for (int i = 1; i < count; i++) {
if(PrintRule==false){
if(cal.getTimeInMillis()<=constantCal.getTimeInMillis()){
listStr.add(sf.format(cal.getTime()));
cal.add(Calendar.DAY_OF_MONTH, 1);// 每次循环+1天
}else{
break;
}
}else{
listStr.add(sf.format(cal.getTime()));
cal.add(Calendar.DAY_OF_MONTH, 1);// 每次循环+1天
}
}
return listStr;
}
/**
* 打印某年(以月份来单位)
* @param Year : 年
* @return List<String>
*/
public static List<String> PrintThisYear(int Year) {
List<String> listStr = new ArrayList<>();
Calendar cal = Calendar.getInstance();
int intYear = Year;// 定义要查询的年份 X年 /
for (int i = 1; i < 13; i++) {// i代表12个月
cal.set(Calendar.YEAR, intYear); // 设置年份为刚才设置的年份
cal.set(Calendar.MONTH, i - 1); // 月份下标从0开始循环到11
cal.set(Calendar.DAY_OF_MONTH, 1);// 获取到月份的值
listStr.add(intYear + "-" + i);
}
return listStr;
}
/**
* 打印指定范围内的日期(以天为单位)
* @param StartDate : 开始日期
* @param EndDate : 结束日期
* @return List<String>
*/
public static List<String> DateOfPrintingTime(String StartDate ,String EndDate) {
List<String> listStr = new ArrayList<>();
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat sdf2 = new SimpleDateFormat("MM-dd");
Calendar ca1 = Calendar.getInstance();
Calendar ca2 = Calendar.getInstance();
try {
ca2.setTime(sdf1.parse(StartDate));// 开始日期
ca1.setTime(sdf1.parse(EndDate)); // 截止日期
int days = (int) ((ca1.getTimeInMillis() - ca2.getTimeInMillis()) / 86400000) + 1;// 计算时间差
for (int i = 0; i < days; i++) {
listStr.add(sdf2.format(ca2.getTime()));
ca2.add(ca1.DATE, 1);
}
} catch (ParseException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
return listStr;
}
0 0
- Calendar 使用
- Calendar使用
- Calendar使用
- Calendar控件使用
- Calendar 的使用
- Calendar控件的使用
- Calendar控件的使用
- C# Calendar控件使用
- Calendar 的使用
- Calendar的使用
- Calendar 正确使用
- Calendar的使用
- Calendar 使用注意
- 关于Calendar的使用
- Calendar使用实例.
- Java使用Google Calendar
- Calendar的使用
- Calendar的使用
- PsychoPy入门_01_文字和图片的呈现
- ios中对象的使用
- win7操作
- UVALive 3720-Highways -组合计数+gcd
- poj 1222(高斯消元)
- Calendar使用
- 【Supervisor】Python 进程管理工具
- 167. Two Sum II - Input array is sorted
- 微软的符号服务器大面积不能访问了
- 啊哈哈哈哈哈
- GLFWError #65542 Happen, WGL: The driver does not appear to support OpenGL
- uploadify插件实现文件多媒体文件上传(spring mvc)
- Android setcompounddrawables 无效,图片不显示
- android跨平台开发系列之-综合运用webview和html5结合(三)