Java函数中的时间及日期处理方法
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等类进行日期时间的转换和处理。在实际开发中,根据业务需求选择合适的时间方法进行处理。
