Java中日期和时间函数的介绍和使用方法
一、Java中日期时间的类
Java中提供了三个主要的日期时间的类: java.util.Date 、java.util.Calendar、java.text.SimpleDateFormat 。 java.util.Date 是最基本的日期时间类型的,它表示了自1970年1月1日00:00:00 GMT开始的毫秒数。java.util.Calendar类提供了修改、查询和转换日期的方法。SimpleDateFormat类提供了格式化和解析日期时间字符串的方法。
二、java.util.Date类
java.util.Date 类是表示日期和时间的类,它继承自 java.lang.Object 类,几乎从 Java 1.0 开始一直存在着。Date 类的构造方法和普通类差不多,日期的基本操作也没什么问题,大体上可以分为以下三个部分:
日期和时间的构造方法和基本操作方法
获取当前时间和日期的方法
日期和时间的比较方法
1、构造方法和基本操作方法
java.util.Date() 无参构造方法,获得当前的日期时间。
java.util.Date(long date) 传入一个long型的时间,从1970年1月1日UTC到该时间的毫秒数。
java.util.Date(int year, int month, int date) 设置年月日。
java.util.Date(int year, int month, int date, int hrs, int min, int sec) 设置年月日时分秒。
java.util.Date(int year, int month, int date, int hrs, int min) 设置年月日时分。
java.util.Date(int year, int month, int date, int hrs, int min, int sec, int tzOffset) 设置年月日时分秒和时区。
方法:
getDate() 获取“date field”(日)。
getMonth() 获取“date field”(月)。
getYear() 获取“date field”(年)。
getDay() 获取“date field”(星期几)。
getHours() 获取“date field”(时)。
getMinutes() 获取“date field”(分)。
getSeconds() 获取“date field”(秒)。
getTime() 获取到1970年1月1日UTC时刻相差的毫秒数。
toString() 转换为 String 类型。
setTime() 设定时间。
2、获取当前时间和日期的方法
根据不同的单位,时间可以用以下几种方式获取:
System.currentTimeMillis(),返回1970年1月1日 00:00:00 到当前时间点(以毫秒为单位)。
Date() 构造方法,获取当前日期时间。
getCalendar(),获取一个 Calendar 实例,这个实例表示了当前时间。
3、日期和时间的比较方法
Date 类还有一些跟日期和时间比较相关的方法,以便我们比较两个日期和时间之间的大小、相等性等问题。
equals(Date) 比较两个日期是否相同。
compareTo(Date) 比较两个日期的顺序。
after(Date) 判断日期是否早于指定日期。
before(Date) 判断日期是否晚于指定日期。
三、java.util.Calendar类
java.util.Calendar是处理日期和时间的类。它可以用来完成各种日期和时间的计算。
Calendar类是一个抽象类,所以不可以直接实例化,我们使用 Calendar.getInstance() 方法获取实例,getInstance() 方法会返回与程序运行环境相应的默认前地区的实例。
方法:
get(int field) 获得指定的“field”值,即日、月等。field的值可以是定义的常量。
set(int field, int value) 设置各种“field”值,即日、月等。
add(int field, int amount) 根据指定的时间和日历字段的规则,将日历字段添加或减去指定数量的时间量。
getLeastMaximum(int field) 返回指定日历字段的最小值。
getMaximum(int field) 返回指定日历字段的最大值。
getTime() 返回一个表示此过程值(从历元到现在的UTC毫秒值)的Date对象。
四、java.text.SimpleDateFormat类
该类主要完成 Date 和 String 之间的转换工作,格式定义符以字母“Y”、“M”、“D”等标识符组成,每个标识符代表一个日期时间字段,可以自定义格式。
可以使用 SimpleDateFormat 的构造方法来指定格式,标准的格式为“yyyy-MM-dd HH:mm:ss”和“yyyy-MM-dd”等。
方法:
format(Date date) 根据指定的模式将给定的日期格式化为字符串。
parse(String source) 将给定字符串解析为日期。
setLenient(boolean lenient) 是否严格的解析日期。
五、日期时间相关的常量
Calendar中定义了各种代表日期时间的常量,比如年、月、日、时、分、秒、毫秒等。
Calendar.YEAR 代表年。
Calendar.MONTH 代表月。
Calendar.DATE 或 Calendar.DAY_OF_MONTH 代表日。
Calendar.HOUR_OF_DAY 代表时。
Calendar.MINUTE 代表分。
Calendar.SECOND 代表秒。
Calendar.MILLISECOND 代表毫秒。
六、示例代码
//获取当前时间和日期的方法
SimpleDateFormat sdf1= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat sdf2= new SimpleDateFormat("yyyy-MM-dd");
Date date= new Date(System.currentTimeMillis());
System.out.println("当前时间:" + sdf1.format(date) + ",当前日期:" + sdf2.format(date));
//Calendar类的常用方法
Calendar calendar= Calendar.getInstance();
calendar.set(Calendar.YEAR, 2020);
calendar.set(Calendar.MONTH, 0);
calendar.set(Calendar.DATE, 1);
System.out.println(calendar.getTime());
calendar.add(Calendar.DAY_OF_MONTH, 5);
System.out.println(calendar.getTime());
System.out.println(Calendar.YEAR);
System.out.println(Calendar.MONTH);
//SimpleDateFormat的使用
String dateStr= "2020-01-01 12:23:45";
SimpleDateFormat sdf3= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date1= sdf3.parse(dateStr);
System.out.println(date1.getTime());
//Date类的常用方法
Date date2= new Date();
System.out.println(date2.getTime());
System.out.println(date2.getHours());
