Java中的DateTime类和日期时间相关函数介绍
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中日期时间的处理比较复杂,需要
