java Date类型处理(获取本周开始时间,本月开始时间,本年开始时间)

Calendar 在 Java 中是一个抽象类(Abstract Class),GregorianCalendar 是它的一个具体实现。
Calendar 与 Date 的转换非常简单:
Calendar cal = Calendar.getInstance();
// 从一个 Calendar对象中获取 Date 对象
Date date = cal.getTime();
//将 Date对象放到一个 Calendar对象中,Calendar/GregorianCalendar没有构造函数可以接受 Date对象 ,
//所以我们必需先获得一个实例,然后设置 Date对象
calendar.setTime(date);
1.int year =cal.get(Calendar.YEAR);
//月份是从0开始
2.int month=cal.get(Calendar.MONTH)+1;
3.int day=cal.get(Calendar.DAY_OF_MONTH);
4.int hour=cal.get(Calendar.HOUR_OF_DAY);
5.int minute=cal.get(Calendar.MINUTE);
6.int seconds=cal.get(Calendar.SECOND);
7.cal.set(Calendar.YEAR,2010);
8.cal.set(Calendar.MONTH,0);
9.cal.set(Calendar.DAY_OF_MONTH,1);
10.cal.set(Calendar.HOUR_OF_DAY,0);
11.cal.set(Calendar.MINUTE,0);
12.cal.set(Calendar.SECOND,0);
//加一天
13.cal.add(Calendar.DAY_OF_MONTH,1);
//减一个月
13.cal.add(Calendar.MONTH,-1);

public class Date_Preocessing {
    // 设置时间格式
    static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

    public static void main(String[] args) {
        // 获取当前时间
        Date date = new Date();
        startWeek(date);
        startMonth(date);
        startYear(date);
    }

    // 获取本周开始时间
    public static void startWeek(Date date) {
        // 使用Calendar类进行时间的计算
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        // 获得当前日期是一个星期的第几天
        // 判断要计算的日期是否是周日,如果是则减一天计算周六的,否则会计算到下一周去。
        // dayWeek值(1、2、3...)对应周日,周一,周二...
        int dayWeek = cal.get(Calendar.DAY_OF_WEEK);
        if (dayWeek == 1) {
            dayWeek = 7;
        } else {
            dayWeek -= 1;
        }
        System.out.println("前时间是本周的第几天:" + dayWeek); // 输出要当前时间是本周的第几天
        // 计算本周开始的时间
        cal.add(Calendar.DAY_OF_MONTH, 1 - dayWeek);
        Date startDate = cal.getTime();
        System.out.println("本周开始时间(周一):" + sdf.format(startDate) + "==当前时间:" + sdf.format(date));
    }

    // 获取本月的开始时间
    public static void startMonth(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        // 设置为1号,当前日期既为本月第一天
        cal.set(Calendar.DAY_OF_MONTH, 1);
        Date startDate = cal.getTime();
        System.out.println("本月开始时间(1号):" + sdf.format(startDate) + "==当前时间:" + sdf.format(date));
    }

    // 获取本按的开始时间
    public static void startYear(Date date) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        // 设置月和日都为1,即为开始时间(注:月份是从0开始;日中0表示上个月最后一天,1表示本月开始第一天)
        cal.set(Calendar.MONTH, 0);
        cal.set(Calendar.DAY_OF_MONTH, 1);
        Date startDate = cal.getTime();
        System.out.println("今年开始时间(1月1号):" + sdf.format(startDate) + "==当前时间:" + sdf.format(date));
    }
}
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值