Date类

Date类

理解

  • java.util 包提供了Date类来封装当前的日期和时间 是父类
  • java.sql 是子类,一个包装了毫秒值的渡包装器(thin wrapeer) ,它允许JDBC 将毫秒值 标识为SQL DATE 值

java.util 构造函数

  • 构造函数1
    • public Date(){}
  • 构造函数2
    • public Date(long millisec)
    • 该参数从1970年1月1号起的毫米数

java.util 方法

序号方法和描述
1boolean after(Date date) 若当调用此方法的Date对象在指定日期之后返回true,否则返回false。
2boolean before(Date date) 若当调用此方法的Date对象在指定日期之前返回true,否则返回false。
3Object clone( ) 返回此对象的副本。
4int compareTo(Date date) 比较当调用此方法的Date对象和指定日期。两者相等时候返回0。调用对象在指定日期之前则返回负数。调用对象在指定日期之后则返回正数。
5int compareTo(Object obj) 若obj是Date类型则操作等同于compareTo(Date) 。否则它抛出ClassCastException。
6boolean equals(Object date) 当调用此方法的Date对象和指定日期相等时候返回true,否则返回false。
7long getTime( ) 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
8int hashCode( ) 返回此对象的哈希码值。
9void setTime(long time) 用自1970年1月1日00:00:00 GMT以后time毫秒数设置时间和日期。
10String toString( ) 把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。

日期默认字符串格式

import java.util.Date;

public class Demo6 {
    public static void main(String[] args) {
        Date date = new Date();
        System.out.println(date);
    }
}
//结果
Sun Jan 15 11:31:12 CST 2023

Process finished with exit code 0

用日期字符串创建日期对象

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

public class Demo6 {
    public static void main(String[] args) throws ParseException {
        String timeString = "2023-01-25 11:34:30";
        String parseStringFormat = "yyyy-MM-dd HH:mm:ss";
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(parseStringFormat, Locale.getDefault());
        Date parseDate = simpleDateFormat.parse(timeString);
        System.out.println(parseDate);

        String timeString2 = "2023年01年25 11:34:30";
        String parseStringFormat2 = "yyyy年MM年dd HH:mm:ss";
        SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat(parseStringFormat2,Locale.getDefault());
        Date parseDate2 = simpleDateFormat1.parse(timeString2);
        System.out.println(parseDate2);
    }
}
//结果
Wed Jan 25 11:34:30 CST 2023
Wed Jan 25 11:34:30 CST 2023

Process finished with exit code 0

格式化日期1-SimpleDateFormat

  • 使用SimpleDateFormat,是一个以语言环境敏感的方式来格式化和分析日期的类

  • SimpleDateFormat 允许你选择用户自定义日期格式来运行

    //方式一
    public static void main(String[] args) {
        Date date = new Date();
        //simple:简单的
        SimpleDateFormat sdf =  new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss");//时间的格式
        System.out.print("当前时间:"+sdf.format(date));
    }
    //方法二 
    public class Demo3 {
        public static void main(String[] args) {
            Date date = new Date();
            Locale locale = Locale.getDefault();//获取此Java 虚拟机实例的当前默认语言环境
            String string = "yyyy-MM-dd hh:mm:ss";
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat(string,locale);
            String time = simpleDateFormat.format(date);
            System.out.println(time);
        }
    }
    
    

日期和时间的格式化编码

  • 时间模式字符串用来指定时间格式。
  • 时间模式字符串中,所用的ASCll字母被保留为模式字母
字母描述示例
G纪元标记AD
y四位年份2001
M月份July or 07
d一个月的日期10
hA.M./P.M. (1~12)格式小时12
H一天中的小时 (0~23)22
m分钟数30
s秒数55
S毫秒数234
E星期几Tuesday
D一年中的日子360
F一个月中第几周的周几2 (second Wed. in July)
w一年中第几周40
W一个月中第几周1
aA.M./P.M. 标记PM
k一天中的小时(1~24)24
KA.M./P.M. (0~11)格式小时10
z时区Eastern Standard Time
文字定界符Delimiter
"单引号`

格式化日期2

  • printf格式化日期
  • 使用两个字母格式,它以%t开头并且以下面表格中的一个字母结尾
public static void main(String[] args) {
    Date date = new Date();
    System.out.printf("全部日期和时间信息:%tc%n",date);
    System.out.printf("年-月-日:%tF%n",date);
    System.out.printf("HH:MM:SS %tr%n",date);
    System.out.printf("HH:MM:SS %tT%n ",date);
    System.out.printf("HH:MM %tR%n",date);
}

字母格式表

转 换 符说 明示 例
c包括全部日期和时间信息星期六 十月 27 14:21:20 CST 2007
F"年-月-日"格式2007-10-27
D"月/日/年"格式10/27/07
r"HH:MM:SS PM"格式(12时制)02:25:51 下午
T"HH:MM:SS"格式(24时制)14:28:16
R"HH:MM"格式(24时制)14:28

Locale类

util 工具包

理解

​ Locale对象 表示了特定的地理,政治和文化地区。

public class Demo3 {
    public static void main(String[] args) {
//        Date date = new Date();
//        Locale locale = Locale.getDefault();
//        String string = "yyyy-MM-dd hh:mm:ss";
//        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(string,locale);
//        String time = simpleDateFormat.format(date);
//        System.out.println(time);
        Locale locale = Locale.getDefault();//获取此Java 虚拟机实例的当前默认语言环境
        String country = locale.getCountry();
        String language = locale.getLanguage();
        System.out.println(country);
        System.out.println(language);
    }
}

时间戳

  • 当前时间毫秒值

时间戳转换成时间字符串

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

public class Demo7 {
    public static void main(String[] args) {
        Date date = new Date();
        long time = date.getTime();// 也可用  long l = System.currentTimeMillis();
        System.out.println("当前时间戳为:"+time);
        String stringFormat = "yyyy-MM-dd HH:mm:ss";//时间格式
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(stringFormat,Locale.getDefault());
        String formatDate = simpleDateFormat.format(time);
        System.out.println("时间戳转换为时间字符串为:"+formatDate);
    }
}
//结果
当前时间戳为:1673754410258
时间戳转换为时间字符串为:2023-01-15 11:46:50

Process finished with exit code 0

时间字符串转换为时间戳

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

public class Demo8 {
    public static void main(String[] args) throws ParseException {
        String timeString = "2023-01-25 11:34:30";
        String stringFormat = "yyyy-MM-dd HH:mm:ss";//时间格式
        System.out.println("时间字符串格式:"+timeString);
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(stringFormat, Locale.getDefault());
        Date parseDate = simpleDateFormat.parse(timeString);//时间字符串 转 日期
        long time = parseDate.getTime();//日期 获得 毫秒数
        System.out.println("时间字符串格式转时间戳:"+time);
    }
}
//结果
时间字符串格式:2023-01-25 11:34:30
时间字符串格式转时间戳:1674617670000

Process finished with exit code 0

java .sql

  • 构造函数

    • Date(long data)
  • 常用方法

    • toString();
    • Date.valueOf();
import java.sql.Date;
import java.text.SimpleDateFormat;

public class Demo5 {
    public static void main(String[] args) {
        long l = System.currentTimeMillis();
        Date date = new Date(l);//构造函数
        System.out.println(date.toString());//toString()
        Date date1 = Date.valueOf("2023-01-15");// 将这个形式日期String转换为java.sql.date
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat();
        String format = simpleDateFormat.format(date1);
        System.out.println(format);
    }
}
//结果
2023-01-15
23-1-15 上午12:00

Process finished with exit code 0

Calendar类

  • 日历类
  • 它是一个抽象类,用于提供关于日期时间计算的方法
方法声明方法作用
static Calender getInstance()返回一个Calendar对象,获取默认时区和语言环境获得一个日历
int get(int field)返回给定日历字段的值
void add(int field,int amount)根据日历的规则,为给定的日历字段添加或减去指定的时间量
void set(int field,int value)设置“年/月/日/小时/分钟/秒/微妙”等值
void set(int year,int month,int date)设置日历字段 YEAR,MONTH 和 DAY_OF-_MONTH的值
public class Demo2 {
    public static void main(String[] args) {
        //创建日历对象
        Calendar calendar = Calendar.getInstance();
        System.out.println(calendar);//获得系统的日历
        // 使用set方法设置
        calendar.set(Calendar.YEAR,2023);// 年
        calendar.set(Calendar.MONTH,0);// 月,从0开始,0表示1月
        calendar.set(Calendar.DAY_OF_MONTH,2);// 日
        calendar.set(Calendar.HOUR_OF_DAY,15);// 24小时计时
        calendar.set(Calendar.MINUTE,17);// 17分
        calendar.set(Calendar.SECOND,10);// 10秒
        System.out.println(calendar.get(2));

        // 使用set方法设置2
        calendar.set(2024,0,2,15,17,19);
        System.out.println(calendar);
    }
}
//结果
java.util.GregorianCalendar[time=1673767311605,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2023,MONTH=0,WEEK_OF_YEAR=3,WEEK_OF_MONTH=3,DAY_OF_MONTH=15,DAY_OF_YEAR=15,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=3,HOUR_OF_DAY=15,MINUTE=21,SECOND=51,MILLISECOND=605,ZONE_OFFSET=28800000,DST_OFFSET=0]
0
java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2024,MONTH=0,WEEK_OF_YEAR=1,WEEK_OF_MONTH=1,DAY_OF_MONTH=2,DAY_OF_YEAR=2,DAY_OF_WEEK=2,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=3,HOUR_OF_DAY=15,MINUTE=17,SECOND=19,MILLISECOND=605,ZONE_OFFSET=28800000,DST_OFFSET=0]

Process finished with exit code 0

Calendar 和 Date

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

public class Demo3 {
    public static void main(String[] args) {
        // 1.根据Date 对象创建 Calendar
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date());
        // 注意:Calendar 没有构造函数接受 Date 对象,因此要先创建一个Calendar 对象,
        // 然后使用 setTime() 设置 Date对象
        System.out.println(calendar);
        System.out.println("--------------------");
        // 2.根据 Calendar 对象获取 Date 对象
        Date date = calendar.getTime();
        System.out.println(date);
    }
}
// 结果
java.util.GregorianCalendar[time=1673767906934,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2023,MONTH=0,WEEK_OF_YEAR=3,WEEK_OF_MONTH=3,DAY_OF_MONTH=15,DAY_OF_YEAR=15,DAY_OF_WEEK=1,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=3,HOUR_OF_DAY=15,MINUTE=31,SECOND=46,MILLISECOND=934,ZONE_OFFSET=28800000,DST_OFFSET=0]
--------------------
Sun Jan 15 15:31:46 CST 2023

Process finished with exit code 0

常用操作Calendar

获取当前时间

import java.util.Calendar;

public class Demo4 {
    public static void main(String[] args) {
        // 创建 Calendar 对象
        Calendar calendar = Calendar.getInstance();
        // 获取年、月、日、时、分、秒
        int year = calendar.get(Calendar.YEAR);// 年 计数从1开始
        int monday = calendar.get(Calendar.MONDAY)+1;// 月 计数从0开始
        int day = calendar.get(Calendar.DAY_OF_MONTH);// 日 从1开始
        int week = calendar.get(Calendar.DAY_OF_WEEK)-1;// 周 1-7 ,星期天返回1,星期一返回2......星期六返回7
        int hour = calendar.get(Calendar.HOUR_OF_DAY);// 时 [0,24)
        int minute = calendar.get(Calendar.MINUTE);// 分 [0,60)
        int second = calendar.get(Calendar.SECOND);// 秒 [0,60)
        System.out.println(year+","+monday+","+day+","+week+","+hour+","+minute+","+second);
    }
}
// 结果
2023,1,15,0,15,48,40

Process finished with exit code 0

日期格式化

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

public class Demo5 {
    public static void main(String[] args) {
        // 根据Calendar 对象 设置 Date对象
        Calendar calendar = Calendar.getInstance();
        Date date = calendar.getTime();
        System.out.println(date);
        String stringFormat = "yyyy-MM-dd HH:mm:ss";//日期格式
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(stringFormat, Locale.getDefault());
        String formatTime = simpleDateFormat.format(date);
        System.out.println(formatTime);
    }
}
// 结果
Sun Jan 15 15:55:11 CST 2023
2023-01-15 15:55:11

Process finished with exit code 0

设置时间

  • 方法1
public class Demo6 {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.YEAR,2023);// 年
        calendar.set(Calendar.MONTH,0);// 月,从0开始,0表示1月
        calendar.set(Calendar.DAY_OF_MONTH,2);// 日
        calendar.set(Calendar.HOUR_OF_DAY,15);// 24小时计时
        calendar.set(Calendar.MINUTE,17);// 17分
        calendar.set(Calendar.SECOND,10);// 10秒
        // 根据 Calendar对象 获取 Date对象
        Date date = calendar.getTime();
        String stringFormat = "yyyy-MM-dd HH:mm:ss";
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(stringFormat, Locale.getDefault());
        String time = simpleDateFormat.format(date);
        System.out.println(time);
    }
}
// 结果
2023-01-02 15:17:10

Process finished with exit code 0
  • 方法2
public class Demo7 {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(2024,0,2,15,17,19);
        Date date = calendar.getTime();
        String stringFormat = "yyyy-MM-dd HH:mm:ss";
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(stringFormat, Locale.getDefault());
        String format = simpleDateFormat.format(date);
        System.out.println(format);
    }
}
// 结果
2024-01-02 15:17:19

Process finished with exit code 0

增加或减少时间

public class Demo8 {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        Date date = calendar.getTime();
        String stringFormat = "yyyy-MM-dd HH:mm:ss";
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat(stringFormat, Locale.getDefault());
        String time1 = simpleDateFormat.format(date);
        System.out.println(time1);
        System.out.println("-----------------");
        calendar.add(Calendar.HOUR_OF_DAY,3);
        calendar.add(Calendar.MINUTE,20);
        calendar.add(Calendar.MINUTE,-30);
        Date date1 = calendar.getTime();
        SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat(stringFormat,Locale.getDefault());
        String time2 = simpleDateFormat1.format(date1);
        System.out.println(time2);
    }
}
// 结果
2023-01-15 16:18:17
-----------------
2023-01-15 19:08:17

Process finished with exit code 0

比较时间

public class Demo9 {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        Calendar calendarNew = Calendar.getInstance();
        calendarNew.add(Calendar.HOUR_OF_DAY,-5);// 5小时以前
        int result1 = calendar.compareTo(calendarNew);// 大 小
        System.out.println(result1);
        System.out.println("------------------------");
        calendarNew.add(Calendar.HOUR_OF_DAY,7);
        int result2 = calendar.compareTo(calendarNew);// 小 大
        System.out.println(result2);
    }
}
// 结果
1
------------------------
-1

Process finished with exit code 0

计算时间差

  • 可用 Calendar.getTimeInMillis() 取得两个时间的微秒级的时间差,在再加以换算即可。
import java.util.Calendar;

public class Demo10 {
    public static void main(String[] args) {
        Calendar calendarStart = Calendar.getInstance();
        Calendar calendarEnd = Calendar.getInstance();
        calendarEnd.add(Calendar.DAY_OF_WEEK,2);
        long value = calendarEnd.getTimeInMillis() - calendarStart.getTimeInMillis();
        System.out.println("差值:"+value);
        long day = value/(1000*60*60*24);
        System.out.println("day:"+day);
    }
}
// 结果
差值:172800000
day:2

Process finished with exit code 0
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咸鱼不咸鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值