Date 、日期、Calendar 类 2021-11-28

1. Date 类的概述和构造方法

Date 、日期、Calendar 类 2021-11-28
1.常用构造方法

Date 代表了一个特定的时间,精确到毫秒

方法名 说明
public Date() 分配一个 Date 对象,并初始化,以便它代表它被分配的时间,精准到毫秒
public Date( long date ) 分配一个 Date 对象,并将其初始化为表示从标准基准时间起指定的毫秒数
        // public Date():  分配一个 Date 对象,并初始化,以便它代表它被分配的时间,精准到毫秒
        Date d1=new Date();
        System.out.println(d1);  // 输出结果为  Wed Nov 24 18:20:51 GMT+08:00 2021

        // public Date( long date ):  分配一个 Date 对象,并将其初始化为表示从标准基准时间起指定的毫秒数
        long l=1000*60*60;
        Date d2=new Date(l);
        System.out.println(d2);  // 输出结果为  Thu Jan 01 09:00:00 GMT+08:00 1970
2. Date 类的常用方法
方法名 说明
public long getTime() 获取的是日起对象从1970年1月1日 00:00:00 到现在的毫秒值
public void setTime( long time ) 设置时间,给的是毫秒值
        //创建日起对象
        Date d = new Date();
        System.out.println(d.getTime() * 1.0 / 1000 / 60 / 60 / 24 / 365 + "年"); // 输出结果为 51.93270544111491年

        long time = System.currentTimeMillis(); //系统现在的时间
        d.setTime(time);
        System.out.println(d); // 输出结果为 Wed Nov 24 18:29:58 GMT+08:00 2021

2. 日期类 SimpleDateFormat 类概述

Date 、日期、Calendar 类 2021-11-28

Date 、日期、Calendar 类 2021-11-28

1. SimpleDateFormat 的构造方法
方法名 说明
public SimpleDateFormat() 构造一个 SimpleDateFormat ,使用默认模式和日期格式
public SimpleDateFormat( String pattern) 构造一个SimpleDateFormat 使用给定的模式和默认的日期格式
  1. 格式化(从 Date 到 String )

    public final String format( Date date ):将日期格式化成日期 / 时间字符串

  2. 解析(从 String 到 Date )

    public Date parse( String source):从给定字符串开始解析文本以生成日期

        //格式化从Date到String
        Date d=new Date();
        SimpleDateFormat sdf =new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        String s = sdf.format(d);
        System.out.println(s);  // 输出结果为 2021年11月24日 18:53:38

        //解析从String到Date
        String ss="2021年10月29日 18时18分18秒";
        SimpleDateFormat sdf2=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
        Date dd=sdf2.parse(ss);
        System.out.println(dd);  // 输出结果为 Fri Oct 29 18:18:18 GMT+08:00 2021

3.日期工具类的练习案例

定义一个日期工具类,包含两个方法:1.把日期转换为指定格式的字符串;2.把字符串解析为指定格式的日期,然后定义一个测试类

package Date;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateUtils {
    private DateUtils(){}

    public static String dateToString(Date date,String format){
        SimpleDateFormat sdf=new SimpleDateFormat(format);
        String s=sdf.format(date);
        return s;
    }

    public static Date stringToDate(String s,String format) throws ParseException {
        SimpleDateFormat sdf=new SimpleDateFormat(format);
        Date d=sdf.parse(s);
        return d;
    }
}

测试类

package Date;

import java.text.ParseException;
import java.util.Date;

public class DateUtilsDemo {
    public static void main(String[] args) throws ParseException {
        Date d=new Date();
        String s1= DateUtils.dateToString(d,"yyyy年MM月dd日 HH:mm:ss");
        System.out.println(s1);  // 输出结果为  2021年11月24日 19:05:58

        String s2=DateUtils.dateToString(d,"yyyy年MM月dd日");
        System.out.println(s2);  // 输出结果为  2021年11月24日

        String s3=DateUtils.dateToString(d,"HH:mm:ss");
        System.out.println(s3);  // 输出结果为  19:05:58

        String s4=DateUtils.dateToString(d,"ss");
        System.out.println(s4);  // 输出结果为  58

        String ss="2021-10-29 19:00:00";
        Date s=DateUtils.stringToDate(ss,"yyyy-MM-dd HH:mm:ss");
        System.out.println(s);  // 输出结果为  Fri Oct 29 19:00:00 GMT+08:00 2021
    }
}

4. Calendar 类概述

Date 、日期、Calendar 类 2021-11-28
      Calendar c=Calendar.getInstance();
      System.out.println(c);
      //输出结果为  java.util.GregorianCalendar[time=1637752371771,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="GMT+08:00",offset=28800000,dstSavings=0,useDaylight=false,transitions=0,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2021,MONTH=10,WEEK_OF_YEAR=48,WEEK_OF_MONTH=4,DAY_OF_MONTH=24,DAY_OF_YEAR=328,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=4,AM_PM=1,HOUR=7,HOUR_OF_DAY=19,MINUTE=12,SECOND=51,MILLISECOND=771,ZONE_OFFSET=28800000,DST_OFFSET=0]
        
      //使用 public int get(int field) 方法
      System.out.println(c.get(Calendar.YEAR)+"年"+(c.get(Calendar.MONTH)+1)+"月"+c.get(Calendar.DATE)+"日");
      //输出结果为  2021年11月24日

Calendar 的常用方法

方法名 说明
public int get( int field ) 返回给定日历字段的值
public abstract void add( int field , int amount ) 根据日历的规则,将指定的时间量添加或减去给定的日历字段
public final void set( int year , int month , int date ) 设置当前日历的年月日
 Calendar c=Calendar.getInstance();
 System.out.println(c.get(Calendar.YEAR)+"年"+(c.get(Calendar.MONTH)+1)+"月"+c.get(Calendar.DATE)+"日");
 //输出结果为  2021年11月24日
      Calendar c=Calendar.getInstance();

      c.add(Calendar.YEAR,10);
      c.add(Calendar.DATE,-10);
      System.out.println(c.get(Calendar.YEAR)+"年"+(c.get(Calendar.MONTH)+1)+"月"+c.get(Calendar.DATE)+"日");
      // 输出结果为  2031年11月15日
      c.set(2021,9,29);
      System.out.println(c.get(Calendar.YEAR)+"年"+(c.get(Calendar.MONTH)+1)+"月"+c.get(Calendar.DATE)+"日");
      // 输出结果为  2021年10月29日

练习案例

二月天:输入任意一年,输出这一年的二月有多少天

package Calendar;

import java.util.Calendar;
import java.util.Scanner;

public class Calendar4 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int year =sc.nextInt();
        Calendar c=Calendar.getInstance();
        c.set(year,2,1);
        c.add(Calendar.DATE,-1);
        System.out.println(year+"年"+"2月有"+c.get(Calendar.DATE)+"天");
        // 输入 2021  输出结果为  2021年2月有28天
    }
}
上一篇:我终于想起密码了~


下一篇:springboot+activiti6.0创建28张表