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;

}


0 0
原创粉丝点击