java对于日期的处理: Date & SimpleDateFormat & Calendar

一、Date&SimpleDateFormat

1. Date
// 1. 构造,表示获取当前的时间
Date date = new Date();
System.out.println(date);

// 2. 获取一个日期的时间戳(从1970年1月1日 0:00:00)开始计算的毫秒数
long timestamp = date.getTime();
System.out.println(timestamp);

// 3. 通过一个时间戳实例化,获取指定的时间
Date date2 = new Date(1582859805644L);
System.out.println(date2);

// 4. 常用方法
System.out.println(date.before(date2));     // 判断一个时间是否在另外一个时间之前
System.out.println(date.after(date2));      // 判断一个时间是否在另外一个时间之后
System.out.println(date.equals(date2));     // 判断两个时间是否相同
date.setTime(1582859805644L);               // 通过一个时间戳设置时间
2. SimpleDateFormat常用格式
/*
SimpleDateFormat在进行时间格式化时候的格式:
y: 年        yy: 短年份        yyyy: 长年分
M: 月
d: 日
h: 时(12小时制)
H: 时(24小时制)
m: 分
s: 秒
S: 毫秒
*/
3. SimpleDateFormat将Date转换成时间字符串
// 1. 可以将一个Date对象转成指定格式的时间字符串
Date date = new Date();
// 1.1. 实例化一个 SimpleDateFormat 对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss:SSS");
// 1.2. 格式化一个时间
String dateStr = sdf.format(date);
System.out.println(dateStr);
6. SimpleDateFormat将时间字符串转换成Date
// 1. 设置一个时间字符串
String str = "2020-11-11 23:59:54:908";
// 2. 实例化一个SimpleDateFormat对象
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");

try {
    Date date = sdf.parse(str);
    System.out.println(date);
} catch (ParseException e) {
    e.printStackTrace();
}

二、Calendar

// Calendar: 日历,在Java中,使用这个类来描述、操作时间。
//           Date类中很多的方法都被废弃了,使用Calendar来替代。
// 1. 获取一个Calendar对象(因为Calendar是一个抽象类,不能通过new实例化对象)
//    getInstance()这个方法,返回的其实是Calendar类的一个非抽象子类的对象,并向上转型。
Calendar calendar = Calendar.getInstance();

// 2. 常用方法
Date date = calendar.getTime();                 // 获取一个用来描述指定时间的Date对象
long timestamp = calendar.getTimeInMillis();    // 获取时间戳

// 3. 设置、获取属性
// 3.1. 在设置属性的时候,Calendar会自动的进行合法性的校验,并且会自动的完成进位
calendar.set(Calendar.YEAR, 2022);
calendar.set(Calendar.MONTH, 12);
calendar.set(Calendar.DAY_OF_MONTH, 31);
calendar.set(Calendar.HOUR_OF_DAY, 24);

// 3.2. 内置的常见属性的设置方法
// 设置年月日
calendar.set(2020, Calendar.FEBRUARY, 28);
// 设置年月日时分
calendar.set(2020, Calendar.FEBRUARY, 28, 23, 39);
// 设置年月日时分秒
calendar.set(2020, Calendar.FEBRUARY, 29, 23, 59, 59);

// 3.3. 属性的获取
System.out.println("year: " + calendar.get(Calendar.YEAR));
System.out.println("month: " + calendar.get(Calendar.MONTH));
System.out.println("day: " + calendar.get(Calendar.DAY_OF_MONTH));
System.out.println("hour: " + calendar.get(Calendar.HOUR_OF_DAY));
System.out.println("minute: " + calendar.get(Calendar.MINUTE));
System.out.println("second: " + calendar.get(Calendar.SECOND));

// 4. 其他方法
calendar.setTime(new Date());               // 通过一个Date对象,设置日历信息
calendar.setTimeInMillis(1582859805644L);   // 通过时间戳,设置时间
calendar.add(Calendar.YEAR, -1);     // 对某一个属性值进行增的运算
System.out.println(calendar.get(Calendar.YEAR));
calendar.add(Calendar.DAY_OF_MONTH, 2);
System.out.println(calendar.get(Calendar.YEAR));
System.out.println(calendar.get(Calendar.MONTH));
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));

Calendar c = Calendar.getInstance();
System.out.println(calendar.before(c));     // 判断一个时间是否在另外一个时间之前
System.out.println(calendar.after(c));      // 判断一个时间是否在另外一个时间之后
System.out.println(calendar.equals(c));     // 判断两个时间是否想等

calendar.clear();               // 清空所有的属性值,重置为 1970年1月1日 00:00:00
calendar.clear(Calendar.YEAR);  // 清空指定的属性值
System.out.println(calendar.get(Calendar.YEAR));
发布了24 篇原创文章 · 获赞 0 · 访问量 279
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 深蓝海洋 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览