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

Java中的DateTime类和日期时间相关函数介绍

发布时间:2023-06-25 20:22:07

DateTime类是Java 8 新增的一个类,它是java.time包中的类。这个类能够处理日期和时间,并且提供了很多方法来操作日期和时间。DateTime类在程序中使用范围非常广泛,接下来我们来详细介绍一下DateTime类和日期时间相关函数的使用。

一、DateTime类

1. DateTime类的构造方法及常量

在DateTime类中,有许多构造方法可以使用。其中,比较常用的有以下几个:

public static DateTime now()  // 返回当前时间

public static DateTime of(int year, int month, int dayOfMonth, int hour, int minute, int second) // 根据年、月、日、时、分、秒返回一个DateTime对象

public static DateTime parse(CharSequence text) // 将字符串解析为DateTime对象

在DateTime类中,还有一些常量可以使用。这些常量包括:

MAX_VALUE // DateTime能够表示的最大时间
MIN_VALUE // DateTime能够表示的最小时间

NANOSECONDS_PER_DAY // 一天中的纳秒数
SECONDS_PER_DAY // 一天中的秒数

2. DateTime类的方法

DateTime类提供了很多方法来操作时间,比较常用的方法包括以下几个:

public int getYear()  // 获取年份,返回int类型

public int getMonthValue()  // 获取月份,返回int类型

public int getDayOfYear()  // 获取一年中的第几天,返回int类型

public int getDayOfMonth()  // 获取一个月中的第几天,返回int类型

public int getDayOfWeek()  // 获取一周中的第几天,返回int类型

public int getHour()  // 获取小时,返回int类型

public int getMinute()  // 获取分钟,返回int类型

public int getSecond()  // 获取秒数,返回int类型

public int getNano()  // 获取纳秒数,返回int类型

public DateTime plusYears(long years)  // 增加年份,返回DateTime对象

public DateTime plusMonths(long months)  // 增加月份,返回DateTime对象

public DateTime plusWeeks(long weeks)  // 增加周数,返回DateTime对象

public DateTime plusDays(long days)  // 增加天数,返回DateTime对象

public DateTime plusHours(long hours)  // 增加小时数,返回DateTime对象

public DateTime plusMinutes(long minutes)  // 增加分钟数,返回DateTime对象

public DateTime plusSeconds(long seconds)  // 增加秒数,返回DateTime对象

public DateTime plusNanos(long nanos)  // 增加纳秒数,返回DateTime对象

public DateTime minusYears(long years)  // 减少年份,返回DateTime对象

public DateTime minusMonths(long months)  // 减少月份,返回DateTime对象

public DateTime minusWeeks(long weeks)  // 减少周数,返回DateTime对象

public DateTime minusDays(long days)  // 减少天数,返回DateTime对象

public DateTime minusHours(long hours)  // 减少小时数,返回DateTime对象

public DateTime minusMinutes(long minutes)  // 减少分钟数,返回DateTime对象

public DateTime minusSeconds(long seconds)  // 减少秒数,返回DateTime对象

public DateTime minusNanos(long nanos)  // 减少纳秒数,返回DateTime对象

public LocalDate toLocalDate()  // 转换为LocalDate对象

public LocalTime toLocalTime()  // 转换为LocalTime对象

public String format(DateTimeFormatter formatter)  // 格式化输出,返回String类型

3. DateTime类的使用示例

以下是一个使用DateTime类的例子。

public class DateTimeTest {
    public static void main(String[] args) {
        DateTime now = DateTime.now();
        System.out.println("当前时间:" + now);

        DateTime nextYear = now.plusYears(1);
        System.out.println("下一年:" + nextYear);

        DateTime nextMonth = now.plusMonths(1);
        System.out.println("下个月:" + nextMonth);

        DateTime nextWeek = now.plusWeeks(1);
        System.out.println("下周:" + nextWeek);

        DateTime tomorrow = now.plusDays(1);
        System.out.println("明天:" + tomorrow);

        DateTime nextHour = now.plusHours(1);
        System.out.println("下一个小时:" + nextHour);

        DateTime nextMinute = now.plusMinutes(1);
        System.out.println("下一分钟:" + nextMinute);

        DateTime nextSecond = now.plusSeconds(1);
        System.out.println("下一秒钟:" + nextSecond);

        LocalDate localDate = now.toLocalDate();
        System.out.println("本地日期:" + localDate);

        LocalTime localTime = now.toLocalTime();
        System.out.println("本地时间:" + localTime);

        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String format = now.format(formatter);
        System.out.println("格式化输出:" + format);
    }
}

二、日期时间相关函数

除了DateTime类,Java中还提供了许多日期时间相关的函数,以下是一些常用的函数:

1. 日期时间转字符串

可以使用SimpleDateFormat类来将日期时间转换为字符串。

Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String strDate = sdf.format(date);
System.out.println(strDate);

2. 字符串转日期时间

可以使用SimpleDateFormat类来将字符串转换为日期时间。

String strDate = "2022-12-31 23:59:59";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse(strDate);
System.out.println(date);

3. 获取当前时间戳

可以使用System.currentTimeMillis()方法来获取当前时间戳。

long timeStamp = System.currentTimeMillis();  
System.out.println(timeStamp);  

4. 本地时间转UTC时间

可以使用TimeZone.getDefault().getRawOffset()方法来获取本地时间与UTC时间的差值,然后将本地时间加上这个差值即可。

Date date = new Date();
long localTime = date.getTime();
int timeZoneOffset = TimeZone.getDefault().getRawOffset();
long utcTime = localTime - timeZoneOffset;
System.out.println(utcTime);

5. UTC时间转本地时间

可以使用TimeZone.getDefault().getRawOffset()方法来获取本地时间与UTC时间的差值,然后将UTC时间加上这个差值即可。

long utcTime = 1643969944238L;
int timeZoneOffset = TimeZone.getDefault().getRawOffset();
long localTime = utcTime + timeZoneOffset;
Date date = new Date(localTime);
System.out.println(date);

6. 获取指定日期的星期几

可以使用Calendar类来获取指定日期的星期几。

String strDate = "2022-12-31";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(strDate);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1;
System.out.println(dayOfWeek);

7. 获取指定年份的天数

可以使用LocalDate类来获取指定年份的天数。

int year = 2022;
LocalDate date = LocalDate.ofYearDay(year, 1);
LocalDate lastDayOfYear = date.with(TemporalAdjusters.lastDayOfYear());
int dayOfYear = lastDayOfYear.getDayOfYear();
System.out.println(dayOfYear);

8. 获取指定月份的天数

可以使用LocalDate类来获取指定月份的天数。

int year = 2022;
int month = 2;
LocalDate date = LocalDate.of(year, month, 1);
int dayOfMonth = date.lengthOfMonth();
System.out.println(dayOfMonth);

9. 计算两个日期之间的天数

可以使用ChronoUnit类来计算两个日期之间的天数。

LocalDate date1 = LocalDate.of(2022, 1, 1);
LocalDate date2 = LocalDate.of(2022, 12, 31);
long daysBetween = ChronoUnit.DAYS.between(date1, date2);
System.out.println(daysBetween);

以上就是Java中的DateTime类和日期时间相关函数的介绍,包括DateTime类的构造方法及常量、方法和使用示例,以及一些常用的日期时间相关函数。需要注意的是,Java中日期时间的处理比较复杂,需要