JAVA JDK7时间相关类

一 Date类

java.util.Date`类 表示特定的瞬间,精确到毫秒。

1 Date 类的构造方法

Date 类有多种构造方法,可以通过不同的方式创建 Date 对象。

1. Date() 构造方法

该构造方法不带任何参数,用于创建一个表示当前时间的 Date 对象。它会返回一个表示当前日期和时间的 Date 实例。

java 复制代码
Date now = new Date();
System.out.println(now);  // 输出当前日期和时间 Tue Jan 16 14:37:35 CST 2024

2 Date(long millis) 构造方法

该构造方法使用从 1970年1月1日00:00:00 UTC(称为"纪元时间"或"Unix时间")以来的毫秒数来创建 Date 对象。可以通过 System.currentTimeMillis() 方法获取当前的毫秒时间。

java 复制代码
long millis = System.currentTimeMillis();  // 获取当前时间的毫秒表示
Date dateFromMillis = new Date(millis);
System.out.println(dateFromMillis);  // 输出基于毫秒的日期和时间

2. Date 类的常用方法

Date 类提供了许多方法用于处理日期和时间,包括获取时间、比较日期等。虽然许多方法已经过时,但它们仍然在某些场合被使用。

2.1 getTime()

该方法返回一个 long 类型的值,表示 Date 对象所表示的时间,从 1970 年 1 月 1 日 00:00:00 UTC 到该 Date 对象的时间的毫秒数。

java 复制代码
Date now = new Date();
long timeInMillis = now.getTime();
System.out.println(timeInMillis);  // 输出时间的毫秒表示

2.2 setTime(long time)`

把方法参数给定的毫秒值设置给日期对象

java 复制代码
public class DateDemo02 {
    public static void main(String[] args) {
        //创建日期对象
        Date d = new Date();
        
        //public long getTime():获取的是日期对象从1970年1月1日 00:00:00到现在的毫秒值
        //System.out.println(d.getTime());
        //System.out.println(d.getTime() * 1.0 / 1000 / 60 / 60 / 24 / 365 + "年");

        //public void setTime(long time):设置时间,给的是毫秒值
        //long time = 1000*60*60;
        long time = System.currentTimeMillis();
        d.setTime(time);

        System.out.println(d);
    }
}

2.3 after(Date when) 和 before(Date when)

after() 方法检查当前 Date 是否在指定日期之后,而 before() 方法检查当前 Date 是否在指定日期之前。这两个方法用于比较两个日期的先后关系。

java 复制代码
Date now = new Date();
Date anotherDate = new Date(System.currentTimeMillis() - 10000000L);  // 过去的一个时间

System.out.println(now.after(anotherDate));  // 输出 true,表示 now 在 anotherDate 之后
System.out.println(now.before(anotherDate));  // 输出 false,表示 now 不在 anotherDate 之前

二 SimpleDateFormat类

SimpleDateFormat 类是 Java 中用于格式化和解析日期的类,它允许将日期对象转换为指定格式的字符串,或者将格式化的字符串转换为 Date 对象。它是 java.text 包的一部分,提供了非常灵活的日期时间格式化功能。

1. 常用构造方法

SimpleDateFormat 有多个构造方法,常用的两个是:

1.1 SimpleDateFormat(String pattern)

这个构造方法通过指定日期时间的模式字符串来创建 SimpleDateFormat 实例。模式字符串由字母、符号和数字组成,代表不同的日期和时间元素。

java 复制代码
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

在这个例子中,"yyyy-MM-dd HH:mm:ss" 是一个日期时间格式,表示年份、月份、日期、小时、分钟和秒。具体含义如下:

  • yyyy:四位数年份
  • MM:两位数月份(01-12)
  • dd:两位数日期(01-31)
  • HH:24小时制的两位数小时(00-23)
  • mm:两位数分钟(00-59)
  • ss:两位数秒数(00-59)

2. 格式化日期:format() 方法

SimpleDateFormat 的 format() 方法用于将 Date 对象转换为指定格式的字符串。

java 复制代码
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateFormatExample {
    public static void main(String[] args) {
        // 创建一个 SimpleDateFormat 对象
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        
        // 获取当前日期时间
        Date now = new Date();
        
        // 将当前日期格式化为字符串
        String formattedDate = sdf.format(now);
        
        // 输出格式化后的日期
        System.out.println(formattedDate);  // 输出类似 2025-01-25 14:20:01 的字符串
    }
}

3. 解析字符串:parse() 方法

SimpleDateFormat 的 parse() 方法用于将一个符合指定格式的日期字符串解析为 Date 对象。此方法会抛出 ParseException,因此需要处理异常。

java 复制代码
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateParseExample {
    public static void main(String[] args) throws ParseException {
        // 创建一个 SimpleDateFormat 对象
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        
        // 要解析的日期字符串
        String dateStr = "2025-01-25 14:20:01";
        
        // 解析日期字符串
        Date date = sdf.parse(dateStr);
        
        // 输出解析后的 Date 对象
        System.out.println(date);  // 输出 2025-01-25 14:20:01.0
    }
}

4 自定义格式

SimpleDateFormat 支持各种格式符号,可以根据需要自定义日期的格式。以下是一些常用的符号:

  • y:年份(yyyy 代表四位年份,如 2025,yy 代表两位年份,如 25)
  • M:月份(MM 代表两位数月份,如 01 到 12)
  • d:日(dd 代表两位数日期,如 01 到 31)
  • H:小时(24小时制,HH 代表两位数小时,如 00 到 23)
  • m:分钟(mm 代表两位数分钟,如 00 到 59)
  • s:秒(ss 代表两位数秒数,如 00 到 59)
  • E:星期几(E 代表简写星期几,如 Mon,EEEE 代表全名星期几,如 Monday)
  • a:AM/PM(a 显示上午或下午)

三 Calendar 类

Calendar 类是 Java 中用于处理日期和时间的一个抽象类,它属于 java.util 包。相比于老旧的 Date 类,Calendar 提供了更强大和灵活的日期和时间操作功能。通过 Calendar 类,可以对日期进行修改、加减、比较等操作。

1. Calendar 类概述

Calendar 类是一个抽象类,不能直接实例化。你需要通过 Calendar.getInstance() 获取其具体实现类的实例。Calendar 提供了一些方法来获取当前日期和时间,修改日期、加减日期,比较日期等。

2. 获取 Calendar 实例

Calendar 类本身是抽象类,因此不能直接使用 new 创建实例。你需要通过 Calendar.getInstance() 方法获取一个 Calendar 对象。

java 复制代码
import java.util.Calendar;

public class CalendarExample {
    public static void main(String[] args) {
        // 获取当前的 Calendar 实例
        Calendar calendar = Calendar.getInstance();
        
        // 输出当前日期和时间
        System.out.println("当前日期和时间: " + calendar.getTime());
    }
}

当前日期和时间: Sat Jan 25 15:49:51 CST 2025

3. 获取和设置日期和时间

3.1 获取日期和时间的各个字段

Calendar 类提供了 get() 方法来获取日期和时间的各个字段,如年份、月份、日期、小时、分钟、秒等。

java 复制代码
import java.util.Calendar;

public class CalendarGetExample {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        
        // 获取年月日时分秒等字段
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH) + 1; // 月份从0开始
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        int hour = calendar.get(Calendar.HOUR_OF_DAY);
        int minute = calendar.get(Calendar.MINUTE);
        int second = calendar.get(Calendar.SECOND);
        
        System.out.println("当前日期: " + year + "-" + month + "-" + day);
        System.out.println("当前时间: " + hour + ":" + minute + ":" + second);
    }
}

当前日期: 2025-1-25
当前时间: 15:50:56

3.2 设置日期和时间

Calendar 类提供了 set() 方法,允许你设置某个字段的值,比如年、月、日、时、分、秒等。

java 复制代码
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;

public class DateDemo {
    public static void main(String[] args) throws ParseException {
        Calendar calendar = Calendar.getInstance();

        // 设置日期为 2025年1月1日
        calendar.set(Calendar.YEAR, 2025);
        calendar.set(Calendar.MONTH, 0);  // 月份从0开始,0表示1月
        calendar.set(Calendar.DAY_OF_MONTH, 1);

        // 设置时间为12:00:00
        calendar.set(Calendar.HOUR_OF_DAY, 12);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);

        System.out.println("设置后的日期和时间: " + calendar.getTime());

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        String format = sdf.format(calendar.getTime());

        System.out.println(format);
    }
}
设置后的日期和时间: Wed Jan 01 12:00:00 CST 2025
2025-01-01 12:00:00

4. 日期加减操作

Calendar 类的 add() 方法允许你对日期进行加减操作。例如,加 5 天,或者减 2 个月。

java 复制代码
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;

public class DateDemo {
    public static void main(String[] args) throws ParseException {
        Calendar calendar = Calendar.getInstance();

        // 加5天
        calendar.add(Calendar.DAY_OF_MONTH, 5);

        // 减2个月
        calendar.add(Calendar.MONTH, -2);

        System.out.println("加减后的日期: " + calendar.getTime());

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String format = sdf.format(calendar.getTime());

        System.out.println(format);
    }
}
加减后的日期: Sat Nov 30 15:56:11 CST 2024
2024-11-30 15:56:11

5. 比较日期

Calendar 类提供了 before()、after() 和 equals() 方法,可以用来比较两个 Calendar 对象的日期。

java 复制代码
import java.util.Calendar;

public class CalendarComparisonExample {
    public static void main(String[] args) {
        Calendar calendar1 = Calendar.getInstance();
        Calendar calendar2 = Calendar.getInstance();
        
        // 将 calendar2 的日期设置为 2020 年
        calendar2.set(Calendar.YEAR, 2020);
        
        // 比较两个日期
        if (calendar1.after(calendar2)) {
            System.out.println("calendar1 的日期晚于 calendar2");
        } else {
            System.out.println("calendar1 的日期早于或等于 calendar2");
        }
    }
}

6. 获取 Date 对象

通过 getTime() 方法,可以将 Calendar 转换为 Date 对象,Date 对象表示 Calendar 中的日期和时间。

java 复制代码
import java.util.Calendar;
import java.util.Date;

public class CalendarToDateExample {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        
        // 获取 Calendar 中的 Date 对象
        Date date = calendar.getTime();
        
        System.out.println("Date 对象: " + date);
    }
}
相关推荐
happylifetree1 分钟前
Python18:核心语法-数据存储与运算-运算符-算术运算符
python
打工仔折腾 AI5 分钟前
从Attention到BERT:双向预训练语言模型到底解决了什么问题
人工智能·后端·python·深度学习·语言模型·bert
谢亮_vipxieliang8 分钟前
Stream API 不是银弹:常见坑与性能建议
java·开发语言
迅猛龙办公室21 分钟前
实现第一个python程序(HelloWorld)
开发语言·python
源码宝21 分钟前
Web‑PACS 云影像源码|Java+Vue3 医院影像管理系统完整方案
java·源码·影像pacs·成品源码·医院影像系统
phltxy23 分钟前
C 语言动态内存管理:从申请空间到安全释放
c语言·开发语言·ui
可乐鸡翅yeah_28 分钟前
M3U8 防盗链 URL‑Token 签名,新手开发实操避坑
开发语言·javascript·ios·音视频·safari
ShineWinsu31 分钟前
对于Redis:string类型的解析
java·c++·redis·分布式·缓存·面试·string
2603_9658966238 分钟前
JS原型与原型链|对象继承与实例底层原理
开发语言·javascript·原型模式
拉格朗日(Lagrange)41 分钟前
【第2 章】WorkBuddy 从入门到高手
开发语言·python