Java时间函数集: Date、Calendar、SimpleDateFormat等
Java中有多个时间函数和类,其中一些常见的包括:Date、Calendar、SimpleDateFormat等。本文将对这些类和函数进行详细介绍,帮助读者更好地理解它们的具体用途和用法。
1. Date类
Date类是Java中处理日期和时间的最基本类。它包含了一个长整型的数值,表示自协调世界时(UTC)1970年1月1日0时0分0秒起的毫秒数。可以使用Date类的构造函数创建一个表示当前日期和时间的对象,如下所示:
Date currentDate = new Date();
也可以使用Date类的getXXX()方法获取日期和时间的各个部分,如下所示:
int year = currentDate.getYear();//获取年份 int month = currentDate.getMonth();//获取月份 int day = currentDate.getDay();//获取日份 int hours = currentDate.getHours();//获取小时 int minutes = currentDate.getMinutes();//获取分钟 int seconds = currentDate.getSeconds();//获取秒钟 long timeStamp = currentDate.getTime();//获取自协调世界时1970年1月1日0时0分0秒起的毫秒数
需要注意的是,虽然getYear()方法返回的是从1900年开始算起的年份,但是该方法已被标记为过时,建议使用Calendar类代替。
2. Calendar类
Calendar类是Java中用于处理日期和时间的更高级别的类,它提供了各种方法来处理日期和时间的各个部分。可以使用Calendar类的getInstance()方法获取一个表示当前日期和时间的Calendar对象,如下所示:
Calendar currentCalendar = Calendar.getInstance();
也可以使用Calendar类的set()方法设置日期和时间的各个部分,如下所示:
currentCalendar.set(Calendar.YEAR, 2022);//设置年份 currentCalendar.set(Calendar.MONTH, 1);//设置月份,需要注意的是,从0开始计数,即0表示1月,1表示2月,以此类推。 currentCalendar.set(Calendar.DAY_OF_MONTH, 1);//设置日份 currentCalendar.set(Calendar.HOUR_OF_DAY, 10);//设置小时,需要注意的是,HOUR_OF_DAY表示24小时制,而HOUR表示12小时制。 currentCalendar.set(Calendar.MINUTE, 30);//设置分钟 currentCalendar.set(Calendar.SECOND, 0);//设置秒钟
可以使用Calendar类的get()方法获取日期和时间的各个部分,如下所示:
int year = currentCalendar.get(Calendar.YEAR);//获取年份 int month = currentCalendar.get(Calendar.MONTH);//获取月份 int day = currentCalendar.get(Calendar.DAY_OF_MONTH);//获取日份 int hours = currentCalendar.get(Calendar.HOUR_OF_DAY);//获取小时 int minutes = currentCalendar.get(Calendar.MINUTE);//获取分钟 int seconds = currentCalendar.get(Calendar.SECOND);//获取秒钟 long timeStamp = currentCalendar.getTimeInMillis();//获取自协调世界时1970年1月1日0时0分0秒起的毫秒数
需要注意的是,Calendar类中的月份从0开始计数,即0表示1月,1表示2月,以此类推。
3. SimpleDateFormat类
SimpleDateFormat类是Java中用于将日期和时间格式化输出的类。可以使用SimpleDateFormat类的构造函数创建一个DateFormat对象,如下所示:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
其中,参数“yyyy-MM-dd HH:mm:ss”表示要输出的日期和时间格式,各个部分的含义和取值范围如下:
| 符号 | 含义 | 取值范围 | 示例 |
|-------|------------------|----------------|----------|
| yyyy | 年份 | 例如:2022 | 2022 |
| MM | 月份 | 01~12 | 02 |
| dd | 日份 | 1~31 | 01 |
| HH | 小时(24小时制) | 0~23 | 10 |
| mm | 分钟 | 0~59 | 30 |
| ss | 秒钟 | 0~59 | 00 |
可以使用SimpleDateFormat类的format()方法将Date对象或Calendar对象格式化输出为字符串,如下所示:
String formattedDate1 = sdf.format(currentDate);//将Date对象格式化输出 String formattedDate2 = sdf.format(currentCalendar.getTime());//将Calendar对象格式化输出
需要注意的是,SimpleDateFormat类还可以处理其他一些日期和时间格式,例如:E表示星期几,a表示上午或下午等,具体用法可以参考Java的官方文档和API文档。
综上所述,Date、Calendar和SimpleDateFormat等时间函数和类可以很好地辅助我们处理日期和时间相关的业务需求,用法也相对简单。需要注意的是,在处理日期和时间的时候,时区的问题也需要考虑到,以免出现意外的错误。
