常用类——日期类

日期类

Date类

概述

  • Date代表了一个特定的时间,精确到毫秒
  • 注意此Date类是在 util 包下的

构造方法

方法名说明
public Date()分配一个 Date对象,并初始化,以便它代表它被分配的时间,精确到毫秒
public Date(long date)分配一个 Date对象,并将其初始化为表示从标准基准时间起指定的毫秒数
import java.util.Date;

public class DateDemo01 {
    public static void main(String[] args) {
        Date date = new Date();
        System.out.println(date); //Thu Aug 12 10:08:36 CST 2021 CST指中国标准时间

        long date1 = 1000*60*60; //1s = 1000ms  1000*60*60即为一小时
        Date date2 = new Date(date1);
        System.out.println(date2);
    }
}

常用方法

方法名说明
public long getTime()获取的是日期对象从1970年1月1日 00:00:00到现在的毫秒值 UTC
public void setTime(long time)设置时间,给的是毫秒值
import java.util.Date;

public class DateDemo02 {
    public static void main(String[] args) {
        Date d = new Date();

        System.out.println(d.getTime());//现在时间与1970年1月1日 00:00:00 UTC 到现在的毫秒值

        long time = System.currentTimeMillis(); //System类下的currentTimeMillis()方法 返回时间 毫秒
        d.setTime(time);

        System.out.println(d); // 输出当前时间
    }
}

SimpleDateFormat类

概述

  • SimpleDateFormat 是一个具体的类,用于以区域设置敏感的方式格式化和解析日期
  • 重点学习 日期格式化 和 解析
常用模式字母对应关系
y
M
d
H
m
s

构造方法

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

常用方法

方法名说明
public final String format(Date date)将日期格式化成日期/时间字符串
public Date parse(String source)从给定字符串的开始解析文本以生成日期
1. 格式化
import java.text.SimpleDateFormat;
import java.util.Date;

public class SimpleDateFormatDemo {
    public static void main(String[] args) {
        Date date = new Date();
        /*//使用默认模式和日期格式
        SimpleDateFormat sdf = new SimpleDateFormat();*/
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        //调用format方法,Date ---> String
        String s = sdf.format(date);
        System.out.println(s); //2021年08月12日 11:48:00
    }
}
2. 解析
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
//解析
public class SimpleDateFormatDemo2 {
    public static void main(String[] args) throws ParseException {
        String s = "2021-08-12 10:35:35";
 //       SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");//ParseException:解析异常
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//格式必须与输入的s相同,注意区分符号中英文
        //调用parse方法,String ---> Date
        Date parse = sdf.parse(s);
        System.out.println(parse); // Thu Aug 12 10:35:35 CST 2021
    }
}

案例<日期工具类>

DateDemo
import java.text.ParseException;
import java.util.Date;
//测试作用
public class DateDemo {
    public static void main(String[] args) throws ParseException {
        //创建日期对象
        Date d = new Date();

        String s = DateUtils.dateToString(d, "yyyy年MM月dd日 HH:mm:ss");//也可以单独输出年月日,或者时分秒
        System.out.println(s);


        String s1 = "2021-08-12 10:54:55";
        Date date = DateUtils.stringToDate(s1, "yyyy-MM-dd HH:mm:ss");
        System.out.println(date);
    }
}
DateUtils
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

//日期工具类
/*
1.定义日期工具类(DateUtils)
2.定义一个方法dateToString,用于把日期转换为指定格式的字符串
  返回值类型:String  参数 Date date,String format 日期,指定格式
3.定义一个方法StringToDate,用于字符串解析为指定格式的日期
  返回值类型:Date    参数 String s,String format
 4.定义测试类DateDemo,调用日期工具类的方法
 */
public class DateUtils {
    //构造方法私有
    private DateUtils() {
    }
    // Date --> String
    public static String dateToString(Date date, String format) {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        String s = sdf.format(date); //format方法: Date --> String
        return s;
    }
    // String --> Date
    public static Date stringToDate(String s, String format) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        Date d = sdf.parse(s); //parse方法: String --> Date
        return d;
    }
}

Calendar类

概述

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

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

    • Calendar rightNow = Calendar.getInstance();
      

常用方法

方法名说明
public int get(int field)返回给定日历字段的值
public abstract void add(int field, int amount)根据日历的规则,将指定的时间量添加或减去给定的日历字段
public final void set(int year,int month,int date)设置当前日历的年月日
代码示例
1. get(int field)
import java.util.Calendar;

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 mouth = c.get(Calendar.MONTH) + 1; //因为月份是从0开始 所以获取的月份要+1才行
        int date = c.get(Calendar.DATE);
        System.out.println(year + "年" + mouth + "月" + date + "日"); //2021年8月12日
    }
}
注意点
  • get方法获取的月份是从0开始的,1月获取的是0,所以 int mouth = c.get(Calendar.MONTH) + 1 中需要加上 1 才能输出当前的月份
2. add(int field, int amount)
import java.util.Calendar;

public class CalendarDemo2 {
    public static void main(String[] args) {
        //获取对象
        Calendar c = Calendar.getInstance();

        //public abstract void add(int field, int amount)
        //根据日历的规则,将指定的时间量添加或减去给定的日历字段
        c.add(Calendar.YEAR,-3);   //三年前
        c.add(Calendar.MONTH,-3); //三个月前
        c.add(Calendar.DATE,-3);  //三天前
        int year1 = c.get(Calendar.YEAR);
        int mouth1 = c.get(Calendar.MONTH) + 1;
        int date1 = c.get(Calendar.DATE);
        System.out.println(year1 + "年" + mouth1 + "月" + date1 + "日"); //2018年5月9日
    }
}
3. set(int year,int month,int date)
import java.util.Calendar;

public class CalendarDemo3 {
    public static void main(String[] args) {
        //获取对象
        Calendar c = Calendar.getInstance();

        //public final void set(int year,int month,int date)
        //设置当前日历的年月日
        c.set(2021,7,12);
        int year2 = c.get(Calendar.YEAR);
        int mouth2 = c.get(Calendar.MONTH) + 1;
        int date2 = c.get(Calendar.DATE);
        System.out.println(year2 + "年" + mouth2 + "月" + date2 + "日");
    }
}

案例

计算二月的天数
import java.util.Calendar;
import java.util.Scanner;

//获取任意一年的二月有多少天
/*
1. 键盘录入任意的年份
2.设置日历对象的年、月、日
    年:键盘录入
    月:设置为3月,月份默认从0开始
    日:设置为1日
3.3月1日往前推一天,就是二月的最后一天
4.获取这一天输出
 */
public class Test {
    public static void main(String[] args) {
        //键盘录入年份
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入年份");
        int year = sc.nextInt();

        // 设置年月日 year,2,1  因为月份默认从0开始,所以设置2就代表3月
        Calendar c = Calendar.getInstance();
        c.set(year,2,1);
        //前一天 3月1日的前一天就是二月的最后一天 即代表二月的总天数
        c.add(Calendar.DATE,-1);
        //获取 日
        int date = c.get(Calendar.DATE);
        //输出
        System.out.println(date);
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值