日期类

日期类

  • Date类概述和构造方法

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

方法名说明
public Date() 分配一个Date对象,并初始化,以便它代表它被分配的时间,精确到毫秒
public Date(long Date) 分配一个Date对象,并将其初始化为表示从标准基准时间起指定的毫秒数
 public class IntegerDemo5 {
     public static void main(String[] args) {
         //public Date()分配一个Date对象,并初始化,以便它代表它被分配的时间,精确到毫秒
         Date d1=new Date();
         System.out.println(d1);
         //public Date(long Date)分配一个Date对象,并将其初始化为表示从标准基准时间起指定的毫秒数
         long date =1000*60*60;
         Date d2=new Date(date);
         System.out.println(d2);
    }
 }
 Tue Aug 17 16:19:31 CST 2021
 Thu Jan 01 09:00:00 CST 1970
  • Date类的常用类

方法名说明
public long getTime() 获取的是日期对象1970年1月1日00:00:00到现在的毫秒值
public void setTime(long time) 设置时间,给的是毫秒值
 package BZN;import java.util.Date;
 /** * public long getTime()获取的是日期对象1970年1月1日00:00:00到现在的毫秒值
     * public void setTime(long time)设置时间,给的是毫秒值
     */
 public class IntegerDemo6 {
     public static void main(String[] args) {
         //创建日期
         Date d1 = new Date();
         //public long getTime()获取的是日期对象1970年1月1日00:00:00到现在的毫秒值
         System.out.println("现在时间是:"+d1);
         //public void setTime(long time)设置时间,给的是毫秒值
         long time = 1000*60*60;
         Date d2 = new Date();
         //long time = System.currentTimeMillis();
         d2.setTime(time);
         System.out.println("java出生时间是:"+d2);
         Date d3 = new Date();
         System.out.println("距今"+d3.getTime()+"毫秒");
         System.out.println("距今"+d3.getTime()*1.0/1000/60/60/24/365+"年");
    }
 }
 现在时间是:Tue Aug 17 16:46:13 CST 2021
 java诞生时间是:Thu Jan 01 09:00:00 CST 1970
 距今1629189973797毫秒
 距今51.66127517113775
 

 

  • SimpleDateFormat 类概述

    SimpleDateFormat是一个具体类,用于以区域设置敏感的方式格式化和解析日期。我们重点学习日期格式化和解析

日期和时间格式由日期和时间模式字符串指定,在日期和时间模式字符串中,从"A"到"Z" 以及从"a"到"z"引号的字母被解释为表示日期或时间字符串的组件的模式字母

常用的模式字母及对应关系如下:

y
M
d
H
m
s
  • SimpleDateFormat 的构造方法

方法名说明
public SimpleDateFormat() 构造一个SimpleDateFormat,使用默认模式和日期格式
public SimpleDateFormat(String pattern) 构造一个SimpleDateFormat使用给定的模式和默认的日期格式
  • SimpleDateFormat 格式化和解析日期

  1. 格式化(从 Date到String)

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

  1. 解析(String 到 Date)

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

 package BZN;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.SimpleTimeZone;
 /**
 * - **SimpleDateFormat 的构造方法**
 *
 * public SimpleDateFormat() 构造一个SimpleDateFormat,使用默认模式和日期格式
 * public SimpleDateFormat(String pattern) 构造一个SimpleDateFormat使用给定的模式和默认的日期格式
 *
 * SimpleDateFormat 格式化和解析日期
 *
 * 1.格式化(从 Date到String)
 *
 *   public final String format(Date date): 将日期格式化成日期/时间字符串
 *
 * 2. **解析(String 到 Date)**
 *
 *   public Date parse(String source) : 从给定字符串的开始解析文本以生成日期
 */
 public class IntegerDemo7 {
     public static void main(String[] args) {
         //格式化(从 Date到String)
         Date d =new Date();
         SimpleDateFormat sdf=new SimpleDateFormat();
         String s = sdf.format(d);
         System.out.println(s);
    }
 }
 2021/8/19 下午4:42
 package BZN;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.logging.SimpleFormatter;
 public class IntegerDemo8 {
     public static void main(String[] args) throws ParseException {
         //格式化(从 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);
         System.out.println("-------------------------");
         //从String 到 Date
         String ss = "2021-08-09 11:11:11";
         SimpleDateFormat sdf2= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
         //ParseException
         Date dd = sdf2.parse(ss);
         System.out.println(dd);
    }
 }
 2021年08月19日 16:43:41
 -------------------------
 Mon Aug 09 11:11:11 CST 2021

案例:日期工具类

需求:定义一个日期工具类(DateUtils),包含两个方法:把日期转换为指定格式的字符串;把字符串解析为指定格式的日期类,然后定义一个测试类(DateDemo),测试日期工具类的方法

思路:

  1. 定义日期工具类(DateUtils)

  2. 定义一个方法dateToString,用于把日期转换为指定格式的字符串

     - 返回值类型: String
     - 参数:Date date , String format
  3. 定义一个方法stringToDate,用于把字符串解析为指定格式的日期

  • 返回值类型: Date

  • 参数: String s ,String format

  1. 定义测试类DateDemo,调用日期工具类中的方法

 package BZN01;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 /** * 工具类
 *
 * 构造方法私有
 * 成员方法静态
 */
 public class DateUtils {
     //构造方法私有
     private DateUtils(){}
     /**
     * 把日期转换为指定格式的字符串
     * 返回值类型: String
     * 参数:Date date , String format
     */
     public static String dateToString(Date date, String format){
         SimpleDateFormat sdf = new SimpleDateFormat(format);
         String s = sdf.format(date);
         return s;
    }
     /**
     * 把字符串解析为指定格式的日期
     * 返回值类型:   Date
     *参数: String s ,String format
     */
     public static Date stringToDate(String s,String format) throws ParseException {
         SimpleDateFormat sdf = new SimpleDateFormat(format);
         Date d =sdf.parse(s);
         return d;
    }
 }
 package BZN01;
 import java.text.ParseException;
 import java.util.Date;
 /**
 * 测试类
 */
 public class DateDemo {
     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);
         String s2 = DateUtils.dateToString(d,"yyyy年MM月dd日");
         System.out.println(s2);
         String s3 = DateUtils.dateToString(d,"HH:mm:ss");
         System.out.println(s3);
         System.out.println("------------------------------------");
         String s="2021-11-11 11:11:11";
         Date dd = DateUtils.stringToDate(s, "yyyy-MM-dd HH:mm:ss");
         System.out.println(dd);    
    }
 }
 2021年08月20日 09:57:58
 2021年08月20日
 09:57:58
 ------------------------------------
 Thu Nov 11 11:11:11 CST 2021
Calendar 类概述

Calendar 为某一时刻和一组日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法

Calendar 提供了一个类方法getlnstance 用于获取Calendar 对象,其日历字段已使用当前日期和时间初始化;

Calendar rightNow = Calendar.getlnstance();

 package BZN02;
 import java.util.Calendar;
 /**
 * Calendar 为某一时刻和一组日历字段之间的转换提供了一些方法,并为操作日历字段提供了一些方法
 * Calendar 提供了一个类方法getlnstance 用于获取Calendar 对象,其日历字段已使用当前日期和时间初始化; * Calendar rightNow = Calendar.getlnstance();
 */
 public class CalendarDemo {
     public static void main(String[] args) {
         //获取对象
         Calendar c = Calendar.getInstance();//多态的形式
         //System.out.println(c);
         
         //public int get (int field)
         int year =c.get(Calendar.YEAR);
         int month =c.get(Calendar.MONTH)+1;
         int date =c.get(Calendar.DATE);
         System.out.println(year + "年" +month + "月" +date + "日");
    }
 }
 2021年8月21日
Calendar 的常用方法
方法名说明
public int get(int field) 返回给定日历字段的值
public abstract void add(int field,int amount) 根据日历的规则,将指定的时间量添加或减去给定的日历字段
public final void set(int year,int month,int date) 设置当前日历的年月日
 package BZN02;
 import java.util.Calendar;
 /**
 * public abstract void add(int field,int amount)根据日历的规则,将指定的时间量添加或减去给定的日历字段
 * public final void set(int year,int month,int date)     设置当前日历的年月日
 */
 public class CalendarDemo02 {
     public static void main(String[] args) {
         //获取对象
         Calendar c = Calendar.getInstance();
         //多态的形式
         //public abstract void add(int field,int amount)
         根据日历的规则,将指定的时间量添加或减去给定的日历字段
             //需求1;3年前的今天
             c.add(Calendar.YEAR,-3);
         int year =c.get(Calendar.YEAR);
         int month =c.get(Calendar.MONTH)+1;
         int date =c.get(Calendar.DATE);
         System.out.println(year + "年" +month + "月" +date + "日");
    }
 }
 2018年8月21日
 
 package BZN02;
 import java.util.Calendar;
 public class CalendarDemo03 {
     public static void main(String[] args) {
         //获取对象
         Calendar c = Calendar.getInstance();
         //多态的形式
         //public int get (int field);返回给定日历字段的值
         //需求2;10年后的5天前
         c.add(Calendar.YEAR,10);
         c.add(Calendar.DATE,-5);
         int year =c.get(Calendar.YEAR);
         int month =c.get(Calendar.MONTH)+1;
         int date =c.get(Calendar.DATE);
         System.out.println(year + "年" +month + "月" +date + "日");
    }
 }
 2031年8月16日
 package BZN02;
 import java.util.Calendar;
 public class CalendarDemo04 {
     public static void main(String[] args) {
         //获取对象
         Calendar c = Calendar.getInstance();
         //多态的形式
         //public int get (int field);返回给定日历字段的值
         // public final void set(int year,int month,int date)
         设置当前日历的年月日
         c.set(2021,11,11);
         
         int year =c.get(Calendar.YEAR);
         int month =c.get(Calendar.MONTH)+1;
         int date =c.get(Calendar.DATE);
         System.out.println(year + "年" +month + "月" +date + "日");
    }
 }
 2021年12月11日

 

案例:二月天

需求:获取任意一年的二月有多少天

思路:

  1. 键盘输入任意年份

  2. 设置日历对象的年,月,日

    • 年:来自于键盘录入

    • 月:设置为3月,月份从0开始,所以设置的值是2

    • 日:设置为1日

  3. 3月1日往前推一天,就在2月的最后一天

  4. 获取这一天的输出即可

 package BZN02;
 import java.util.Calendar;
 import java.util.Scanner;
 /**
 * 需求:获取任意一年的二月有多少天
 *
 * 思路:
 *
 * 1. 键盘输入任意年份
 * 2. 设置日历对象的年,月,日
 *     年:来自于键盘录入
 *     月:设置为3月,月份从0开始,所以设置的值是2
 *     日:设置为1日
 * 3. 3月1日往前推一天,就在2月的最后一天
 * 4. 获取这一天的输出即可
 */
 public class CalendarDemo05 {
     public static void main(String[] args) {
         Scanner sc=new Scanner(System.in);
         System.out.print("请输入年份:");
         int year=sc.nextInt();
         //设置日历对象的年,月,日
         Calendar c = Calendar.getInstance();
         //这里设置月份为2的意思就是,月份初始值为0所以三月份只需要输入2就可以
         c.set(year,2,1);
         //3月1日往前推一天,就在2月的最后一天
         c.add(Calendar.DATE,-1);
         //获取这一天的输出即可
         int date = c.get(Calendar.DATE);
         System.out.print(year+"年的2月份有"+date+"天");
    }
 }
 请输入年份:2021
 2021年的2月份有28天



posted @ 2021-08-21 16:30  小布托里  阅读(92)  评论(0)    收藏  举报