欢迎访问宙启技术站
智能推送

Java函数中的时间及日期处理方法

发布时间:2023-05-19 19:43:10

Java中的时间和日期处理方法非常丰富。常见的日期时间类有: Date、Calendar、SimpleDateFormat、LocalDate、LocalDateTime等等。下面将分别介绍各个类的主要用法。

1. Date类

Date类是Java最早的日期时间类,用来表示一个精确到毫秒的时间。它可以通过System.currentTimeMillis()方法获取当前时间戳,并转化为Date对象。

import java.util.Date;

public class Main {

    public static void main(String[] args) {

        Date date = new Date(System.currentTimeMillis());

        System.out.println(date);

    }

}

运行结果:

Mon Feb 01 15:11:07 CST 2021

Date类有一个问题,就是对于一些国际化的应用,输出的时间格式可能不符合用户的需求。因此,我们常用SimpleDateFormat类进行日期时间格式的转换。

2. SimpleDateFormat类

SimpleDateFormat类是一个简单的日期格式化类,可以将Date对象转化为指定格式的字符串。

import java.text.SimpleDateFormat;

import java.util.Date;

public class Main {

    public static void main(String[] args) {

        Date date = new Date(System.currentTimeMillis());

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

        String strDate = sdf.format(date);

        System.out.println(strDate);

    }

}

运行结果:

2021-02-01 15:12:25

上面代码中,SimpleDateFormat类中的参数“yyyy-MM-dd HH:mm:ss”表示格式化后的字符串格式,具体含义如下:

y:年

M:月

d:日

H:小时

m:分钟

s:秒

如果需要输出更加具体的时间信息,比如毫秒值、时区等,可以用DateFormat类来进行转换。

3. DateFormat类

DateFormat类是一个抽象类,它包含了一些常用的日期时间格式,同时也支持自定义。

import java.text.DateFormat;

import java.util.Date;

import java.util.Locale;

public class Main {

    public static void main(String[] args) {

        Date date = new Date(System.currentTimeMillis());

        DateFormat df = DateFormat.getDateTimeInstance(

            DateFormat.FULL, DateFormat.FULL, Locale.getDefault());

        String strDate = df.format(date);

        System.out.println(strDate);

    }

}

运行结果:

Monday, February 01, 2021 3:19:41 PM CST

上面代码中,DateFormat.getDateTimeInstance()方法用来获取一个DateFormat对象,它包含了日期格式、时间格式、地区等信息。在这里,我们使用了FULL表示完整的日期和时间格式。Locale.getDefault()表示使用系统默认的地区信息。

4. Calendar类

Calendar类是一个表示日期时间的抽象类,它可以转化成Date对象,通过Date对象获取时间对应的年、月、日、时、分、秒等信息。

import java.util.Calendar;

import java.util.Date;

public class Main {

    public static void main(String[] args) {

        Calendar cal = Calendar.getInstance();

        Date date = cal.getTime();

        System.out.println(date);

        int year = cal.get(Calendar.YEAR);

        int month = cal.get(Calendar.MONTH) + 1;

        int day = cal.get(Calendar.DATE);

        int hour = cal.get(Calendar.HOUR_OF_DAY);

        int minute = cal.get(Calendar.MINUTE);

        int second = cal.get(Calendar.SECOND);

        System.out.printf("%d-%02d-%02d %02d:%02d:%02d", 

            year, month, day, hour, minute, second);

    }

}

运行结果:

Mon Feb 01 15:22:07 CST 2021

2021-02-01 15:22:07

上面代码中,我们首先通过Calendar.getInstance()方法获取一个Calendar对象,然后将其转化为Date对象。通过get()方法获取年、月、日、时、分、秒等信息,注意月份需要加1。

5. LocalDate和LocalDateTime类

Java 8引入了一个新的日期时间API:java.time包,用来替代旧的日期时间API。其中,LocalDate表示只包含日期信息的类,LocalDateTime表示包含日期和时间信息的类。这两个类都是不可变的,线程安全的。

import java.time.LocalDate;

import java.time.LocalDateTime;

public class Main {

    public static void main(String[] args) {

        LocalDate date = LocalDate.now();

        System.out.println(date);

        LocalDateTime dateTime = LocalDateTime.now();

        System.out.println(dateTime);

    }

}

运行结果:

2021-02-01

2021-02-01T15:24:24.463

上面代码中,我们分别使用LocalDate和LocalDateTime获取当前日期和时间。需要注意的是,Java 8中的时间方法都是静态方法,我们需要通过类名称调用。

总结

Java中的日期时间处理方法非常丰富。我们可以使用Date、SimpleDateFormat、DateFormat、Calendar、LocalDate、LocalDateTime等类进行日期时间的转换和处理。在实际开发中,根据业务需求选择合适的时间方法进行处理。