引言
这里是对java的Calendar类的练习使用,为了更加熟悉,写了一个小的功能,判断对方给你发的消息过了多长时间。
calendar类
Calendar
类是 Java 中用于处理日期和时间操作的抽象类。它提供了一个方法来执行日期和时间字段之间的转换,以及对日期和时间进行各种操作,如增加或减少天数、小时、分钟等。Calendar
类是日历操作的一个通用框架,它可以用于执行日期计算和日期格式化。
以下是一些Calendar
类的主要特点和用法:
- 获取 Calendar 实例:您可以通过
Calendar.getInstance()
方法获取一个Calendar
实例,该实例将根据当前时区和区域设置返回一个具体的子类实例(例如GregorianCalendar
)。
Calendar calendar = Calendar.getInstance();
- 获取日期字段的值:您可以使用
get
方法获取特定日期字段(如年、月、日、小时、分钟等)的值。
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH); // 0-based (0 for January, 11 for December)
int day = calendar.get(Calendar.DAY_OF_MONTH);
- 设置日期字段的值:您可以使用
set
方法设置特定日期字段的值。
calendar.set(Calendar.YEAR, 2023);
calendar.set(Calendar.MONTH, Calendar.MARCH); // 2 for March (0-based)
calendar.set(Calendar.DAY_OF_MONTH, 15);
- 增加或减少日期字段的值:使用
add
方法,可以增加或减少特定日期字段的值,如增加一天、减少一个小时等。
calendar.add(Calendar.DAY_OF_MONTH, 7); // 增加7天
calendar.add(Calendar.HOUR, -3); // 减少3小时
- 日期字段的转换:
Calendar
类可以将日期字段值转换为毫秒数,以便进行日期比较和计算。
long timeInMillis = calendar.getTimeInMillis();
- 日期格式化:您可以使用
SimpleDateFormat
类或其他日期格式化工具将Calendar
对象中的日期信息格式化为特定的日期字符串。
Calendar
类是处理日期和时间操作的强大工具,可以用于计算日期差异、解析日期字符串、执行日期比较等多种任务。然而,请注意,Java 8及以后的版本引入了java.time
包,提供了更现代和易于使用的日期和时间处理类,如LocalDate
和LocalDateTime
,通常更适合用于新的日期和时间操作。
简单功能“判断对方发的消息时长”
package cn.wange;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class OutCalendar {
public static void main(String[] args) throws ParseException {
Calendar cc = Calendar.getInstance();
long timeInMillis = cc.getTimeInMillis();
//这里模拟对方发的消息,时间,内容
String time = "2023-10-11 19:18:00";
String content = "你好";
//将字符串时间转换为Date类型数据
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date parsed = simpleDateFormat.parse(time);
//获取到本地现在的时间戳在减去当时的时间戳。
long timeDifference = System.currentTimeMillis() - parsed.getTime();
//if-else语句进行判断两个时间戳相减后转换为分、时、天,从而做到动态输出。
if (timeDifference / 1000 / 60 < 1)
System.out.printf("刚刚:%s", content);
else if (timeDifference / 1000 / 60 >= 1 && timeDifference / 1000 / 60 < 60) {
System.out.printf("%d分钟前:%s", timeDifference / 1000 / 60, content);
} else if (timeDifference / 1000 / 60 / 60 >= 1 && timeDifference / 1000 / 60 / 60 < 24) {
System.out.printf("%d小时前:%s", timeDifference / 1000 / 60 / 60, content);
} else if (timeDifference / 1000 / 60 / 60 / 24 >= 1 && timeDifference / 1000 / 60 / 60 / 24 < 7) {
System.out.printf("%d天前:%s", timeDifference / 1000 / 60 / 60 / 24, content);
} else {
System.out.printf("%tF %<tT:%s", parsed, content);
}
}
}