Java中获取当前日期可以通过Date或Calendar类的对象实现,本文整理了两个类的常用方法及其功能的实现。
Date类
1.获取当前日期时间——创建Date类对象
Date currentDate = new Date();
2.日期先后比较
currentDate.before(newDate); //判断currentDate是否在newDate之前,返回布尔值
currentDate.after(newDate); 判断currentDate是否在newDate之前,返回布尔值
3.得到日期自1970年1月1日起经历的毫秒数——getTime()
Calendar类
Calendar类可表示时间分量,包括:年(YEAR),月(MONTH),日(DATE),时(HOUR),分(MINUTE),秒(SECOND).
注意:
-
使用函数得到的月份比当前月份少1;得到的时(HOUR)为12小时制。
-
此外,还可得到今天是本周第几天(DAY_OF_WEEK);当前时刻是今天(24进制)第几个小时(HOUR_OF_DAY);今天是今年第几天(默认天数比实际天数多1)。
基于当前时间创建Calendar类对象
Calendar calendar = Calendar.getInstance(); //基于当前时间创建对象
常用方法
(参考资料:https://blog.youkuaiyun.com/weixin_42110638/article/details/85467987)
通过Calendar类对象调用函数 实现以下功能:
1.得到当前时间:getTime()
2.得到时间分量:get(时间分量)
import java.util.Calendar;
public class CalendarTest {
public static void main(String[] args) {
// 得到Calendar实例(获得当前日期对象)
Calendar calendar = Calendar.getInstance();
// 利用calendar对象输出当前日期
System.out.println("当前时间:" + calendar.getTime());
System.out.println("当前年份:" + calendar.get(Calendar.YEAR));
System.out.println("当前月:" + (calendar.get(Calendar.MONTH)+1));
System.out.println("当前日期:" + calendar.get(Calendar.DATE));
System.out.println("当前小时:" + calendar.get(Calendar.HOUR));
System.out.println("当前小时(12进制):" + calendar.get(Calendar.HOUR));
System.out.println("当前小时(24进制):" + calendar.get(Calendar.HOUR_OF_DAY));
//得到今天是本周第几天(默认周日是一周第一天)
System.out.println("当前星期:" + calendar.get(Calendar.DAY_OF_WEEK));
//得到今天是今年第几天(默认天数比实际天数多1)
System.out.println("当前是今年第:" + (calendar.get(Calendar.DAY_OF_YEAR)-1)+"天");
}
}
格式化时间(SimpleDateFormat)
日期和时间格式由日期和时间模式字符串 指定。在 日期和时间模式字符串 中,未加引号的字母 ‘A’ 到 ‘Z’ 和 ‘a’ 到 ‘z’ 被解释为模式字母,用来表示日期或时间字符串元素。即:AZ或az字母会被特殊处理替换为对应的日期时间,其他的字符串是原样输出。
日期格式的字母表示
- yyyy:年
- MM:月
- dd:日
- hh:1~12小时制(1-12)
- HH:24小时制(0-23)
- mm:分
- ss:秒
- S:毫秒
- E:星期
- D:一年中的第几天
- F:一月中的第几个星期(会把这个月总共过的天数除以7)
- w:一年中的第几个星期
- W:一月中的第几星期(会根据实际情况来算)
- a:上下午标识
- k:和HH差不多,表示一天24小时制(1-24)。
- K:和hh差不多,表示一天12小时制(0-11)。
- z:表示时区
SimpleDateFormat类的parse和format方法
-
parse:将字符串转换成时间
-
format:将时间转换成字符串
用 SimpleDateFormat 类的 format(Date对象) 方法指定时间格式
用SimpleDateFormat类对象调用format方法实现日期的格式化
import java.text.SimpleDateFormat;
import java.util.Date;
import java.text.ParseException;
public class DateFormatTes {
public static void main(String[] args) {
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
SimpleDateFormat sdf2 = new SimpleDateFormat("yy/MM/dd HH:mm");
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd");
Date now = new Date();
System.out.println("输出格式1: "+sdf1.format(now));
System.out.println("输出格式2: "+sdf2.format(now));
System.out.println("输出格式3: "+sdf3.format(now));
}
}
用 SimpleDateFormat 类的 parse(String对象) 方法将字符串转换成时间
将字符串通过 SimpleDateFormat 类的 parse 方法转换为时间(Date类),用Date类对象接收
import java.text.SimpleDateFormat;
import java.util.Date;
import java.text.ParseException;
public class DateFormatTes {
public static void main(String[] args) {
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
SimpleDateFormat sdf2 = new SimpleDateFormat("yy/MM/dd HH:mm");
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd");
String s = "2021-12-19";
Date date;
try {
date = sdf3.parse(s);
System.out.println("输出date: "+date);
System.out.println("输出sdf1格式: "+sdf1.format(date));
System.out.println("输出sdf2格式: "+sdf2.format(date));
System.out.println("输出sdf3格式: "+sdf3.format(date));
} catch (ParseException e) {
e.printStackTrace();
}
}
}