java 时间类使用

java时间类使用

 概述:java时间类有六大类,分别是

java.util.Date
java.sql.Date  
java.sql.Time  
java.sql.Timestamp
java.text.SimpleDateFormat
java.util.Calendar

六大类介绍

一、java.util.Date

该类使用频率较高,精确度到毫秒

1. 创建对象及获取对象信息、格式输出

        // 导入类
        // import java.text.SimpleDateFormat;
        // import java.util.Date;

        // 1.生成当前日期
        Date date = new Date();
        System.out.println("date: "+date);          // 输出结果 date: Sun May 09 23:35:09 CST 2021

        // 2.生成指定日期 例如:生成2021年1月1日    Date(int year, int month, int day)      year需减1900,month需减1
        Date dateDay = new Date(2021-1900,1-1,1);
        System.out.println("dateDay: "+dateDay);

        // 3.生成指定日期 例如:生成2021年1月1日        或者(new Date(yyyy,MM,dd);)
        Date dateDay2 = new Date("2021/1/1");
        System.out.println("dateDay2: "+dateDay2);

        // 4.生成指定日期 例如:生成2021年1月1日14小时30分30秒
        Date dateDay3 = new Date("2021/1/1 14:30:30");
        System.out.println("dateDay3: "+dateDay3);

        // 5.获取data信息
        Date dateGetMes = new  Date("2021/1/1 14:30:30");
        // 获取年份
        int year = dateGetMes.getYear()+1900;
        System.out.println("year: "+year);
        // 获取月份
        int month = dateGetMes.getMonth() + 1;
        System.out.println("month: "+month);
        // 获取日期 getDate()
        // 获取小时 getHours()
        // 获取分钟 getMinutes()
        // 获取秒 getSeconds()

        // 6.格式化输出
        SimpleDateFormat spf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
        Date dateForm = new  Date("2021/1/1 14:30:30");
        String format = spf.format(dateForm);
        System.out.println("format: "+format);   // 输出结果    format: 2021-01-01 14:30:30 000

二、java.sql.Date

/**
 *  java.sql.Date
 *  java.sql.Date是java.util.Date的子类,java.sql.Date只包含年月日信息
 *  java.sql.Date用于数据库中字段的保存和读取
 */
public class javaSqlDate {

    public static void main(String[] args) {

        // 1.生成当前日期
        long time = System.currentTimeMillis();         // 当前时间毫秒数
        java.sql.Date date = new java.sql.Date(time);
        System.out.println(date);                       // 输出结果:2021-08-04

        // 2. 生成特定时间。可生成特定时间的date,获取date的毫秒数

    }

}

三、java.sql.Time

import java.sql.Date;
import java.sql.Time;

/**
 *  java.sql.Time   只有时分秒的数据
 */
public class javaSqlTime {
    public static void main(String[] args) {

        // 1. 生成当前时间
        long hm = System.currentTimeMillis();         // 当前时间毫秒数
        java.sql.Time time = new Time(hm);
        System.out.println("time:"+time);             // 输出结果:time:15:19:10

        // 2. 生成指定时间
        // 初始化Time time= new Time(10000);数字代表毫秒数,当Time time= new Time(0)时,表示的时间是08:00:00;所以new Time(10000)表示在08:00:00的基础上加了10秒
        // 可以先生成指定的Date时间,再获取毫秒生成java.sql.time
        java.sql.Time time1 = new Time(0);
        time1.setHours(9);
        time1.setMinutes(10);
        time1.setSeconds(50);
        System.out.println("time1:"+time1);         // 输出结果:time1:09:10:50
    }
}

四、java.sql.Timestamp


import java.sql.Timestamp;

/**
 *  java.sql.Timestamp  日期格式为:年月日时分秒纳秒(毫微秒)
 */
public class javaSqlTimestamp {

    public static void main(String[] args) {
        // 1.生成当前日期
        Timestamp time = new Timestamp(System.currentTimeMillis());
        System.out.println("time:"+time);               // 输出结果:time:2021-08-04 15:33:57.651

        // 2. 生成指定的日期
        String tsStr = "2021-8-04 11:49:45";
        Timestamp time2 = Timestamp.valueOf(tsStr);
        System.out.println("time2:"+time2);              // 输出结果:time2:2021-08-04 11:49:45.0

    }
}

五、java.text.SimpleDateFormat

package com.javaDate;

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

/**
 *  SimpleDateFormat    格式化时间
 */
public class simpleDateFormat {

    public static void main(String[] args) {
        // 1.date类型格式化字符串
        Date date = new Date();
        SimpleDateFormat format0 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String time = format0.format(date);
        System.out.println("time1:" + time);                // 输出结果:time1:2021-08-04 15:58:39
        SimpleDateFormat format1 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
        String time2 = format1.format(date);
        System.out.println("time2:" + time2);               // 输出结果:time2:2021年08月04日 15时58分39秒

        /*
            A—Z,a—z代表的意思
            yyyy:年
            MM:月
            dd:日
            hh:1~12小时制(1-12)
            HH:24小时制(0-23)
            mm:分
            ss:秒
            S:毫秒
            E:星期几
            D:一年中的第几天
            F:一月中的第几个星期(会把这个月总共过的天数除以7)
            w:一年中的第几个星期
            W:一月中的第几星期(会根据实际情况来算)
            a:上下午标识
            k:和HH差不多,表示一天24小时制(1-24)。
            K:和hh差不多,表示一天12小时制(0-11)。
            z:表示时区
         */
    
        // 2.格式的时间字符串转成时间类型
        Date date2 = new Date();
        SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String dateStr = "2022-11-05 16:30:00";
        date2 = format2.parse(dateStr);
        System.out.println("date2:" + date2);       // 输出结果:date2:Sat Nov 05 16:30:00 CST 2022

        Date date3 = new Date();
        SimpleDateFormat format3 = new SimpleDateFormat("yyyyMMdd HH:mm:ss");
        String dateStr3 = "20221004 16:30:00";
        date3 = format3.parse(dateStr3);
        System.out.println("date3:" + date3);       // 输出结果:date3:Tue Oct 04 16:30:00 CST 2022

    }
}

六、java.util.Calendar

package com.javaDate;

import java.util.Calendar;

/**
 * Calendar Java官方推荐使用Calendar来替换Date的使用。
 */
public class calendar {

    public static void main(String[] args) {

        // 1.生成当前日期
        Calendar c = Calendar.getInstance();
        System.out.println("nowdate:"+c.getTime());            // 输出结果:nowdate:Tue Aug 03 17:32:07 CST 2021

        // 2.生成指定日期 例如:生成2021年2月12日
        Calendar cal = Calendar.getInstance();
        // 月份下标从0开始赋值月份要-1
        // 时分秒不赋值默认取当前时间
        cal.set(2021, 1, 12);
        System.out.println("cal:"+cal.getTime());               // 输出结果:cal:Fri Feb 12 17:35:27 CST 2021


        // 3.生成指定日期 例如:生成2021年2月12日23时59分59秒
        Calendar cal2 = Calendar.getInstance();
        // 月份下标从0开始赋值月份要-1
        cal2.set(2021, 1, 12, 23, 59, 59);
        System.out.println("cal2:"+cal2.getTime());              // 输出结果:cal2:Fri Feb 12 23:59:59 CST 2021

        // 3.1生成指定日期 单个字段设置 例如:生成2021年5月10日10时59分59秒
        Calendar cal3_1 = Calendar.getInstance();
        cal3_1.set(Calendar.YEAR, 2021);
        cal3_1.set(Calendar.MONTH, Calendar.OCTOBER);
        cal3_1.set(Calendar.DAY_OF_MONTH, 10);
        cal3_1.set(Calendar.HOUR_OF_DAY, 10);
        cal3_1.set(Calendar.MINUTE, 59);
        cal3_1.set(Calendar.SECOND, 59);
        System.out.println("cal3_1:"+cal3_1.getTime());         // 输出结果:cal3_1:Sun Oct 10 10:59:59 CST 2021


        // 4.获取data信息
        Calendar cal3 = Calendar.getInstance();
        cal3.set(2021, 1, 12, 23, 59, 59);
        // 获取年份、月份、天等信息
        System.out.println("年:" + cal3.get(Calendar.YEAR));
        System.out.println("月:" + (cal3.get(Calendar.MONTH) + 1));
        System.out.println("日:" + cal3.get(Calendar.DAY_OF_MONTH));
        System.out.println("时:" + cal3.get(Calendar.HOUR_OF_DAY));
        System.out.println("分:" + cal3.get(Calendar.MINUTE));
        System.out.println("秒:" + cal3.get(Calendar.SECOND));
        /*
        输出结果:
            年:2021
            月:2
            日:12
            时:23
            分:59
            秒:59
         */

        // 5.格式化输出
        /*
            使用getTime()方法获得Date对象,对Date对象进行格式化输出
         */

        // 6.时间操作
        // 6.1 时间加一秒
        Calendar cal_min = Calendar.getInstance();
        cal_min.set(2021, 7, 8, 23, 59, 59);
        System.out.println("cal_min"+cal_min.getTime());        // 输出结果:cal_minSun Aug 08 23:59:59 CST 2021
        cal_min.add(Calendar.SECOND, 1);
        System.out.println("cal_min:"+cal_min.getTime());       // 输出结果:cal_min:Mon Aug 09 00:00:00 CST 2021

        // 6.2 时间加1月
        Calendar cal_month = Calendar.getInstance();
        cal_month.set(2021, 7, 8, 23, 59, 59);
        System.out.println("cal_month"+cal_month.getTime());        // 输出结果:cal_monthSun Aug 08 23:59:59 CST 2021
        cal_month.add(Calendar.SECOND, 1);
        System.out.println("cal_month:"+cal_month.getTime());       // 输出结果:cal_month:Mon Aug 09 00:00:00 CST 2021

        // 7. 获取本月的最小天数
        Calendar cal4 = Calendar.getInstance();
        cal4.set(2021, 1, 8, 23, 59, 59);
        int minDay = cal4.getActualMinimum(Calendar.MONTH);
        System.out.println("minDay"+minDay);

    }

}

各时间类型之间的转化

package com.javaDate;


import java.util.Calendar;
import java.util.Date;

/**
 * 不同类型日期之前的转化
 */
public class convert {

    public static void main(String[] args) {
        // 1. Calendar转化为Date
        Calendar cal= Calendar.getInstance();
        Date date=cal.getTime();

        // 2. Date转化为Calendar
        Date date2=new Date();
        Calendar cal2=Calendar.getInstance();
        cal2.setTime(date2);

        // 3. java.sql.Date转java.util.Date
        long time = System.currentTimeMillis();
        System.out.println("time:"+time);                       // 输出结果:time:1628060544777
        java.sql.Date sdate = new java.sql.Date(time);
        java.util.Date udate = sdate;                           // 这是上转型,会自动转换
        System.out.println("udate gettime:"+udate.getTime());   // 输出结果:udate gettime:1628060544777

        // 4. java.util.Date转java.sql.Date  以毫秒转化
        // 转换后的毫秒数是一样的
        java.util.Date udate2 = new java.util.Date();
        System.out.println("udate2:"+udate2);                   // 输出结果:udate2:Wed Aug 04 14:59:01 CST 2021
        System.out.println("udate2 gettime:"+udate2.getTime());     // 输出结果:udate2 gettime:1628060422241
        java.sql.Date sdate2 = new java.sql.Date(udate2.getTime());
        System.out.println("sdate2:"+sdate2);                   // 输出结果:sdate2:2021-08-04
        System.out.println("sdate2 gettime:"+sdate2.getTime());     // 输出结果:sdate2 gettime:1628060422241

        // 5. java.util.Date转java.sql.Timestamp
        Date date3 = new Date("2021/1/1");
        Timestamp timestamp3 = new Timestamp(date3.getTime());
        System.out.println("timestamp3:" + timestamp3);         // 输出结果:timestamp3:2021-01-01 00:00:00.0

        Date date4 = new Date(timestamp3.getTime());            
        System.out.println("date4:" + date4);                   // 输出结果:date4:Fri Jan 01 00:00:00 CST 2021

    }

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值