java中常用日期类学习

Date、SimpleDateFormat 、 Calendar

一、Date 日期类
1.1 简介

java.util.Date 是一个用来表示日期的类。

java底层使用long类型表示日期,long类型的值是当前时间的毫秒值,这个毫秒值是基于1970年1月1日 0时0分0秒 的差值,这个时间被认为是计算机的起始时间(纪元时间)。

Date类中有很多的构造方法和其他方法都是过时的了,建议不要使用。

1.2 常用方法
Date()无参构造器,创建对象并初始化
Date(long date)可以指定时间的构造器(指定毫秒值), 即1970年1月1日00:00:00 起的毫秒值。
after(Date when)判断某个日期是否在指定日期之后
before(Date when)判断某个日期是否在指定日期之前
compareTo(Date anotherDate)对两个日期进行比较 如果日期a>日期b,则返回1,如果日期a<日期b,则返回­1,如果a==b,则返回0
getTime()获取一个时间的毫秒值
1.3 常用方法演示
1.3.1 Date 无参构造器,创建对象并初始化
public static void main(String[] args) {
        //创建一个日期对象
        Date date = new Date();
        //输入日期对象
        System.out.println(date);//输出的是系统当前的时间
    }
1.3.2 可以指定时间的构造器(指定毫秒值)
public static void main(String[] args) {
        //创建一个日期对象,并传入一个数值(毫秒)
        Date date = new Date(1000);
        //输入日期对象
        System.out.println(date);
    }
1.3.3 after(Date when) 判断某个日期是否在指定日期之后
public static void main(String[] args) {
        //创建日期对象,并传入一个数值(毫秒)
        Date date = new Date(1000);
        Date date1 = new Date(2000);
        // 判断某个日期是否在指定日期之后
        boolean flag = date1.after(date);
        System.out.println(flag);//true 表示date1时间在date时间之后,反之就在之前
    }
1.3.4 before(Date when) 判断某个日期是否在指定日期之前
public static void main(String[] args) {
        //创建日期对象,并传入一个数值(毫秒)
        Date date = new Date(1000);
        Date date1 = new Date(2000);
        // 判断某个日期是否在指定日期之前
        boolean flag = date.before(date1);
        System.out.println(flag);true 表示date时间在date1时间之前,反之就在之后
    }
1.3.5 compareTo(Date anotherDate) 对两个日期进行比较 如果a>b,则返回1,如果a<b,则返回­1,如果a==b,则返回0
 public static void main(String[] args) {
        //创建日期对象,并传入一个数值(毫秒)
        Date date = new Date(1000);
        Date date1 = new Date(2000);
        // 比较两个日期
        int compare = date.compareTo(date1);
        System.out.println(compare);//返回-1,表示date日期比date1日期小
    }

1.3.6 getTime() 获取一个日期的毫秒值

public static void main(String[] args) {
        //创建日期对象,并传入一个数值(毫秒)
        Date date = new Date(1000);
        //创建另一个日期对象
        Date date1 = new Date();
        //获取这两个日期的毫秒值
        System.out.println(date.getTime());
        System.out.println(date1.getTime());
    }
二、SimpleDateFormat
2.1 简介

java.text.SimpleDateFormat类是一个用来格式字符串的类,继承自DateFormat类。最常见的就是用来对Date日期类和String字符串类之间的转换。

2.2 通过SimpleDateFormat类把日期转换为字符串

第一步:创建一个日期对象(或提供一个日期对象)

//创建日期对象
Date date = new Date();

第二步:创建SimpleDateFromat对象,并指定格式

//创建SimpleDateFormat对象,并指定目标格式,如 2021-1-14 15:40:45
 //yyyy-MM-dd HH:mm:ss    yyyy表示年,MM表示月份,dd表示天  HH表示小时,mm分钟,ss表示秒
 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

第三步:调用format方法,对日期对象进行格式化

 public static void main(String[] args) {
        //创建日期对象
        Date date = new Date();
        //创建SimpleDateFormat对象,并指定目标格式,如 2021­1­14 15:40:45
        //yyyy-MM-dd HH:mm:ss    yyyy表示年,MM表示月份,dd表示天  HH表示小时,mm分钟,ss表示秒
        //其它格式:yyyy年-MM月-dd日   // yyyyMMdd  
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //调用format()方法,进行格式化
        String format = sdf.format(date);
        System.out.println(format);
    }
注意:还可以在指定格式的时候加上一个字母,比如 Y 表示几年,E 表示星期几,D表示这年的第几天,W 表示这个月的第几周:
new SimpleDateFormat("Y yyyy-MM-dd HH:mm:ss");
new SimpleDateFormat("E yyyy-MM-dd HH:mm:ss");
new SimpleDateFormat("D yyyy-MM-dd HH:mm:ss");
new SimpleDateFormat("W yyyy-MM-dd HH:mm:ss");
需要了解更多的日期格式方法的,可以去jdk api中看看
2.3 字符串转换为日期

第一步:提供一个字符串

 //提供一个字符串
  String date = "2021年2月14日";

第二步:创建SimpleDateFromat对象,并指定格式

//创建SimpleDateFormat对象,并指定字符串的日期格式
  SimpleDateFormat sfd = new SimpleDateFormat("yyyy年MM月dd日");

注意:指定的格式要与字符串的格式相同,例如字符串的格式为2020-12-21,

SimpleDateFormat的格式就为yyyy-MM-dd,如果上下格式不相同,会出现异常

第三步:调用parse()方法,解析字符串为日期

 public static void main(String[] args) throws ParseException {
       //提供一个字符串
       String date = "2021年2月14日";
       //创建SimpleDateFormat对象,并指定字符串的日期格式
        SimpleDateFormat sfd = new SimpleDateFormat("yyyy年MM月dd日");
       //parse(),解析字符串为日期
        Date parse = sfd.parse(date);
        System.out.println(parse);
    }
2.4 关于数据库中日期类与java中的日期类的转化
1、java中日期类:  java.util.Date
2.数据库中日期类:  java.sql.Date

java中的代码:
String date = "2020-12-21";//日期字符串
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd");//指定为日期格式
java.util.Date date2 = sdf.parse(date);//解析字符串
Date date3 = new Date(date2.getTime());//注意这里的new Date()是java.sql.Date
//这样处理后,date3就可以当成参数传到数据库了
三、 Calendar
3.1 简介

java.util.Calendar表示日历类,用于日期的运算和取值 。

Calendar是一个抽象类,不能通过new来创建对象,使用静态方法getInstance()获取一个实例 。

3.2 常用的方法
方法或属性
getInstance()获取实例
getTime()返回一个Date对象
getTimeInMillis()获取时间的毫秒值
int get(int field)返回给定日历字段的值
3.3 常用方法演示
3.3.1 获取一个日历实例(对象) getInstance()
 //获取一个Calendar实例
  Calendar calendar = Calendar.getInstance();
3.3.2 通过一个Calender对象获取一个Date对象
 //获取一个Calendar实例
  Calendar calendar = Calendar.getInstance();
  //将calendar转换为Date
  Date date = calendar.getTime();
  System.out.println(date);
3.3.3 获取时间的毫秒值 getTimeInMillis()
//获取一个Calendar实例
Calendar calendar = Calendar.getInstance();
//获取毫秒值
long millis = calendar.getTimeInMillis();
System.out.println(millis);
3.3.4 int get(int field)返回给定日历字段的值,比如日期的年、月、日等等
 public static void main(String[] args) {
        //获取一个Calendar实例
        Calendar calendar = Calendar.getInstance();
        //get(int filed) 获取日期的指定字段
        int year = calendar.get(Calendar.YEAR);//获取年年
        int month = calendar.get(Calendar.MONTH);//获取月份(这里的月从0-11)
        int day = calendar.get(Calendar.DATE);//获取日
        System.out.println("日期为:" +year+"年"+(month+1)+"月"+day+"日");
        System.out.println(calendar.get(Calendar.DAY_OF_MONTH));//返回一个月中的第几天
        System.out.println(calendar.get(Calendar.DAY_OF_WEEK));//返回一周中的第几天,1-7
        System.out.println(calendar.get(Calendar.DAY_OF_YEAR));//返回一年中的第几天
        int hour = calendar.get(Calendar.HOUR_OF_DAY);//获取小时 24小时制
        int minute = calendar.get(Calendar.MINUTE);//获取分钟
        int second = calendar.get(Calendar.SECOND);//获取秒
        System.out.println("日期为:" +year+"年"+ (month+1)+"月"+day+"日"+hour+"时"+minute+"分"+second+"秒");
        //给日期添加时间add()
        calendar.add(Calendar.YEAR,1);//当前时间增加1年
        calendar.add(calendar.DATE,2);//增加两天
        calendar.add(calendar.HOUR,5);//增加5小时
        System.out.println(calendar.getTime());

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值