(API)Date

4.Date

1.Date类

1.1 概念

  • java.sql.Datejava.util.Date 的一个子类,主要用于和 SQL 数据库中的 DATE 类型进行交互。它将日期信息存储为自 1970 年 1 月 1 日 00:00:00 GMT 以来的毫秒数,但只保留日期部分(年、月、日),会忽略时间部分(时、分、秒)。

  • Date 类表示日期和时间(该类大部分方法已过时),提供操纵日期和时间各组成部分的方法,Date 类的最佳应用之一是获取系统当前时间

  • 获取系统当前时间是一个长整型数据Long, Date 类实际上只是一个包裹类, 它包含的是一个长整型数据,表示的是从GMT(格林尼治标准时间)1970年, 1 月 1日00:00:00这一刻之前或者是之后经历的毫秒数.


2.DateFormat类

2.1 概念

  • DateFormat 是 Java 中用于格式化和解析日期和时间的抽象类,它位于 java.text 包中。该类提供了一系列方法,允许你将日期对象(如 java.util.Date)转换为特定格式的字符串,也可以将特定格式的字符串解析为日期对象

2.2 主要作用

  • 日期格式化:将 Date 对象转换为符合特定格式的字符串,方便展示给用户。

  • 日期解析:将符合特定格式的字符串转换为 Date 对象,便于程序进行日期处理

2.3 常用子类

  • DateFormat 是抽象类,不能直接实例化,通常会使用它的子类,如 SimpleDateFormatDateTimeFormatter(Java 8 及以后推荐使用)。

2.4 常用方法

  • format(Date date):将给定的 Date 对象格式化为字符串。

  • parse(String source):将给定的字符串解析为 Date 对象。

2.5 应用

  • String format(Date date) 方法用于格式化时间

  • static DateFormat getDateInstance() 获取日期的DateFormat 对象

  • static DateFormat getDateTimeInstance() 获取日期-时间的DateFormat 对象

  • static final DateFormat getDateTimeInstance(int dateStyle, int timeStyle)获取给定 日期和时间格式化风格 DateFormat 对象 (可选参数 short,full, long, medium ,)

2.6 SimpleDateFormat

  • 功能:完成日期的显示格式化

  • 只要通过向SimpleDateFormat 的构造函数传递格式字符串“EEEE-MM-dd-yyyy",

  • 我们就能够指明自己想要的格式. 然后调用DateFormat(Date date)方法,得到想要的格式。

  • EEEE是星期, MM是月, dd是日, yyyy是年. 字符的个数决定了日期是如何格式化的.传递"EE-MM-dd-yyyy"会显示 星期五-02-27-2009

"yyyy-MM-dd EEEE hh:mm:ss"
yyyy年MM月dd日 HH时mm分ss秒SSS毫秒
"yyyy/MM/dd hh:mm:ss"
"EEE, d MMM yyyy  HH:mm:ss Z"
  • public Date parse(String source) ( DateFormat类中 )解析格式化一个字符串时间, 将一个字符串转换成时间

  • 例如:Date d = sdf2.parse("2008/10/28 13:20:22");//注意字符串的格式必须和设定的格式(sdf2)一致

3.Date

3.1 创建日期对象

  • 创建一个日期对象,使用new操作符和Date构造函数即可

  • Date now = new Date();

  • 在调用Date构造函数而不传递参数的情况下,新创建的对象自动获得当前日期和时间。

3.2 Date的方法

  • 与其他引用类型一样,Date类型也重写了toLocaleString()、toString()方法;但这些方法返回的值与其他 类型中的方法不同。

3.3 Calendar类

  • 我们现在已经能够格式化并创建一个日期对象了, 但是我们如何才能设置和获取日期数据的特定部分呢, 比如说小时, 日, 或者分钟? 我们又如何在日期的这些部分加上或者减去值呢?

    • 使用Calendar 类。Calendar 类也是一个抽象类,它有一个子类GregorianCalendar,接下来我会利用这个子类来演示这个过程,请看以下代码

    • 使用GregorianCalendar类获取时间相关信息

    • calendar.get(Calendar.YEAR) 获取年

    • calendar.get(Calendar.MONTH) + 1) 获取月

    Calendar cal = new GregorianCalendar();
            cal.set(Calendar.YEAR, 2012); //设置cal的年份为 2012年
            System.out.println(cal.get(Calendar.YEAR)); //打印年份
            cal.set(Calendar.MONTH, 9); //设置月份
            System.out.println(cal.get(Calendar.MONTH));
            cal.set(2018, 3, 2); //设置年月日
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            System.out.println(sdf.format(cal.getTime()));
            cal.add(Calendar.YEAR, 2); //年上加2年
            cal.add(Calendar.MONTH, 2);//月上加2
            System.out.println(sdf.format(cal.getTime()));

3.4 日期数据的定制格式

  • 只要通过向SimpleDateFormat 的构造函数传递格式字符串"EEE-MMMM-dd-yyyy", 我们就能够指明自己想要的格式. 你应该可以看见, 格式字符串中的ASCII 字符告诉格式化函数下面显示日期数据的哪一个部分. EEEE是星期, MMMM是月, dd是日, yyyy是年. 字符的个数决定了日期是如何格式化的.传递"EE-MM-dd-yy"会显示 Sat-09-29-01.

SimpleDateFormat bartDateFormat =          
 new SimpleDateFormat(“EEEE-MMMM-dd-yyyy”); 
// E  星期中的天数, M  年中的月份 , D  年中的天数,y年 
 Date date = new Date();         
System.out.println(bartDateFormat.format(date));

3.5日期格式化方法

  • Date类型还有一些专门用于将日期格式化为字符串的方法

    • toDateString() -以特定于实现的格式显示星期几、月、日和年;

    • toTimeString() -以特定于实现的格式显示时、分、秒和时区;

    • toLocaleDateString() -以特定于地区的格式显示星期几、月、日和年

    • toLocaleTrimeString() -以特定于实现的格式显示时、分、秒;

    • toUTCString() -以特定于实现的格式完整的UTC日期。

  • 与toLocaleString()和toString()方法一样,以上这些字符串格式方法的输出也是因浏览器而异的,因此没有哪一个方法能够用来在用户界面中显示一致的日期信息。

3.6 日期/时间组件方法

  • getTime() 返回表示日期的毫秒数;与valueOf()方法返回的值相同

  • setTime(毫秒) 以毫秒数设置日期,会改变整个日期 getFullYear() 取得4位数的年份(如2007而非仅07)

  • getUTCFullYear() 返回UTC日期的4位数年份

  • setFullYear(年) 设置日期的年份。传人的年份值必须是4位数字(如2007而非仅07)

  • setUTCFullYear(年) 设置UTC日期的年份。传人的年份值必须是4位数字(如2007而非仅07)

  • getMonth() 返回日期中的月份,其中O表示一月,11表示十二月

  • getUTCMonth() 返回UTC日期中的月份,其中0表示一月,11表示十二月

  • setMonth(月) 设置日期的月份。传人的月份值必须大于O,超过11则增加年份

  • setUTCMonth(月) 设置UTC日期的月份。传人的月份值必须大于O,超过11则增加年份

  • getDate() 返回日期月份中的天数(1到31)

  • getUTCDate() 返回UTC日期月份中的天数(1到31)

  • setDate(日) 设置日期月份中的天数。如果传人的值超过了该月中应有的天数,则增加月份

  • setUTDate(日) 设置UTC日期月份中的天数。如果传人的值超过了该月中应有的天数,则增加月份

  • getDay() 返回日期中星期的星期几(其中0表示星期日,6表示星期六)

  • getUTCDay() 返回UTC日期中星期的星期几(其中0表示星期日,6表示星期六)

  • getHours() 返回日期中的小时数(0到23)

  • getUTCHours() 返回UTC日期中的小时数(O到23)

  • setHours(时) 设置日期中的小时数。传人的值超过了23则增加月份中的天数

  • setUTCHours(时) 设置UTC日期中的小时数。传人的值超过了23则增加月份中的天数

  • getMinutes() 返回日期中的分钟数(0到59)

  • getUTCMinutes() 返回UTC日期中的分钟数(O到59)。

  • setMinutes(分) 设置日期中的分钟数。传入的值超过59则增加小时数

  • setUTCMinutes(分) 设置UTC日期中的分钟数。传入的值超过59则增加小时数

  • getSeconds() 返回日期中的秒数(O至IJ59)。

  • getUTCSeconds() 返回UTC日期中的秒数(0到59)。

  • setSeconds(秒) 设置日期中的秒数。传人的值超过了59会增加分钟数

  • set UTCSeconds(秒) 设置UTC日期中的秒数。传人的值超过了59会增加分钟数

  • getMilliseconds() 返回日期中的毫秒数

  • getUTCMilliseconds() 返回UTC日期中的毫秒数

  • setMilliseconds(毫秒) 设置日期中的毫秒数

  • setUTCMilliseconds(毫秒) 设置UTC日期中的毫秒数

  • getTimezoneOffset() 返回本地时间与UTC时间相差的分钟数。例如,美国东部标准时间返回300。在某地进入夏令时的情况下,这个值会有所变化

3.7 日期和时间模式

  • 字母 日期或时间元素 表示 示例

  • y 年 Year 1996; 96

  • M 年中的月份 Month July; Jul; 07

  • w 年中的周数 Number 27

  • W 月份中的周数 Number 2

  • D 年中的天数 Number 189

  • d 月份中的天数 Number 10

  • F 月份中的星期 Number 2

  • E 星期中的天数 Text Tuesday; Tue

  • a Am/pm 标记 Text PM

  • H 一天中的小时数(0-23) Number 0

  • k 一天中的小时数(1-24) Number 24

  • K am/pm 中的小时数(0-11) Number 0

  • h am/pm 中的小时数(1-12) Number 12

  • m 小时中的分钟数 Number 30

  • s 分钟中的秒数 Number 55

  • S 毫秒数 Number 978

  • z 时区 General time zone Pacific Standard Time; PST; GMT-08:00

  • Z 时区 RFC 822 time zone -0800

4.String和Date之间的互转(localdatetime)

  • StringDate 之间的互转可以借助 java.time 包下的 LocalDateTime 类来实现

4.1 StringLocalDateTime`

  • 要将 String 转换为 LocalDateTime,需要先定义日期时间的格式,然后使用 DateTimeFormatter 进行解析。

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
​
public class StringToLocalDateTimeExample {
    public static void main(String[] args) {
        // 定义日期时间字符串
        String dateTimeStr = "2025-02-08 12:30:00";
        // 定义日期时间格式
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        // 将字符串解析为 LocalDateTime 对象
        LocalDateTime localDateTime = LocalDateTime.parse(dateTimeStr, formatter);
        System.out.println("Parsed LocalDateTime: " + localDateTime);
    }
}

4.2 LocalDateTimeString

  • LocalDateTime 转换为 String 同样需要使用 DateTimeFormatter 来指定输出的格式

    import java.time.LocalDateTime;
    import java.time.format.DateTimeFormatter;
    ​
    public class LocalDateTimeToStringExample {
        public static void main(String[] args) {
            // 获取当前的 LocalDateTime 对象
            LocalDateTime now = LocalDateTime.now();
            // 定义日期时间格式
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
            // 将 LocalDateTime 对象格式化为字符串
            String dateTimeStr = now.format(formatter);
            System.out.println("Formatted String: " + dateTimeStr);
        }
    }

3.3 LocalDateTimeDate 之间的转换

  • 由于 LocalDateTime 是 Java 8 引入的新类,而 Date 是旧的日期时间类,它们之间的转换需要借助 InstantZoneId

3.3.1 LocalDateTimeDate
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Date;
​
public class DateToLocalDateTimeExample {
    public static void main(String[] args) {
        // 创建一个 Date 对象
        Date date = new Date();
        // 将 Date 转换为 Instant
        Instant instant = date.toInstant();
        // 获取系统默认时区
        ZoneId zoneId = ZoneId.systemDefault();
        // 将 Instant 转换为 LocalDateTime
        LocalDateTime localDateTime = instant.atZone(zoneId).toLocalDateTime();
        System.out.println("Converted LocalDateTime: " + localDateTime);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值