Java中的日期时间介绍

public class TestDate {
    public static void main(String[] args){

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar calendar = Calendar.getInstance();

        // 1.得到当前时间
        System.out.println(sdf.format(calendar.getTime()));

        // 2.得到上一个月的月初
        calendar.add(Calendar.MONTH, -1);
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
        Date strDateFromDefault = calendar.getTime();
        String monthFirstDay = sdf.format(strDateFromDefault.getTime());
        System.out.println(monthFirstDay);

        // 3.得到上一个月的月末
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
        Date strDateToDefault = calendar.getTime();
        String monthLastDay = sdf.format(strDateToDefault.getTime());
        System.out.println(sdf.format(strDateToDefault.getTime()));

        // 4.ͨ通过某个月的第一天得到对应这个月的最后一天【日期的截取】
        String monthBeginDay = "2015-11-01";
        String month = monthBeginDay.substring(5, 7);
        int lastDay = (month.indexOf(0) == 0) ? month.indexOf(1) : Integer.parseInt(month);
        calendar.set(Integer.parseInt(monthBeginDay.substring(0, 4)), lastDay-1, 1);
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
        Date strDate = calendar.getTime();
        monthLastDay = sdf.format(strDate.getTime());

        System.out.println(monthLastDay);

        // 5.判断某一个日期是否符合当前格式,用正则表达式
        String monthBeginDay = "2015-07";
        if(!monthBeginDay.matches("^[0-9]{4,4}-[0-1][1-9]$")){
           System.out.println("格式不正确ȷ ");
        }else {
            System.out.println("格式正确");
        }

        // 6.判断某一个日期是否符合当前格式,用正则表达式
          String eL = "[0-9]{4}-[0-1][0-9]";
          Pattern p = Pattern.compile(eL);
          Matcher m = p.matcher("2015-03000");
          boolean dateFlag = m.matches();
          if (!dateFlag) {
            System.out.println("格式错误");
          }
          else{
            System.out.println("格式正确");
          }

        //7.得到某个月的月初和月末
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
        String monthFirstDay = sdf.format(calendar.getTime());
        System.out.println(monthFirstDay);

        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
        String monthLastDay = sdf.format(calendar.getTime());
        System.out.println(monthLastDay);

        //8.增加月份或者天数后的日期
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(calendar.getTime());//这里的时间必须是Date型
        calendar.add(Calendar.MONTH, 1);
        System.out.println("增加月份后的日期:"+calendar.getTime());

        Calendar calendar = Calendar.getInstance();
        calendar.setTime(calendar.getTime());
        calendar.add(Calendar.DAY_OF_MONTH, 100);
        System.out.println("增加天数后的日期:"+calendar.getTime());

       // 9.获取当前时间对应的本周星期一和星期天的日期
        Calendar cal =Calendar.getInstance();
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        cal.setTime(cal.getTime());
        cal.add(Calendar.DAY_OF_WEEK, 2);
        System.out.println("增加月份后的日期:"+df.format(cal.getTime()));
         //判断要计算的日期是否是周日,如果是则减一天计算周六的,否则会出问题,计算到下一周去了
        int dayWeek = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
        if(1 == dayWeek) {
            cal.add(Calendar.DAY_OF_MONTH, -1);
        }
        cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); //获取本周一的日期
        System.out.println("本周星期一的日期:"+df.format(cal.getTime()));
        //这种输出的是上个星期周日的日期,因为老外那边把周日当成第一天
        cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
        //增加一个星期,才是我们中国人理解的本周日的日期
        cal.add(Calendar.WEEK_OF_YEAR, 1);
        System.out.println("本周星期天的日期:"+df.format(cal.getTime()));

        //10.获取当前时间对应的下周星期一和星期天的日期
        Calendar cal =Calendar.getInstance();
        //SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        DateTool df = new DateTool();
        cal.setTime(cal.getTime());
        cal.add(Calendar.DAY_OF_WEEK, 5);
        System.out.println("增加月份后的日期:"+df.format(cal.getTime()));
         //判断要计算的日期是否是周日,如果是则减一天计算周六的,否则会出问题,计算到下一周去了
        int dayWeek = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
        System.out.println(dayWeek);
        if (dayWeek != 1) {
            cal.add(Calendar.DAY_OF_MONTH, 9 - dayWeek);
        }
        cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); //获取本周一的日期
        System.out.println("下周星期一的日期:"+df.format(cal.getTime()));
        //这种输出的是上个星期周日的日期,因为老外那边把周日当成第一天
        cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
        //增加一个星期,才是我们中国人理解的本周日的日期
        cal.add(Calendar.WEEK_OF_YEAR, 1);
        System.out.println("下周星期天的日期:"+df.format(cal.getTime()));

        String releaseDate = df.format(cal.getTime());
        String releaseDateNextSundaySql = "TO_DATE('"+releaseDate.substring(0, 12)+"', 'Month dd, YYYY')";
        System.out.println("下周星期天的日期:"+releaseDateNextSundaySql);

         //11.将date型时间的时分秒置为0
         Calendar calendar =Calendar.getInstance();
         calendar.setTime(calendar.getTime());
         calendar.set(Calendar.HOUR_OF_DAY, 0);
         calendar.set(Calendar.MINUTE, 0);
         calendar.set(Calendar.SECOND, 0);
         calendar.set(Calendar.MILLISECOND, 0);
         Date newShowDate = calendar.getTime();
         System.out.println(newShowDate);

        //12.获取特定格式的日期
         Calendar calendar =Calendar.getInstance();
         DateTool dt = new DateTool();
         String showDate = dt.format("MMM d, yyyy", calendar.getTime());
         System.out.println(showDate);

        Date date = new Date();
        DateFormat shortDateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT,DateFormat.SHORT);
        DateFormat mediumDateFormat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM);
        DateFormat longDateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG);
        DateFormat fullDateFormat = DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL);
        //7/14/16 6:18 PM
        System.out.println(shortDateFormat.format(date));
        //Jue 14, 2016 6:18:20 PM
        System.out.println(mediumDateFormat.format(date));
        //Jue 14, 2016 6:18:20 PM CST
        System.out.println(longDateFormat.format(date));
        //Monday, Jue 14, 2016 6:18:20 PM CST
        System.out.println(fullDateFormat.format(date));
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值