时间日期操作
SimpleDateFormat函数语法:
G 年代标志符
y 年
M 月
d 日
h 时 在上午或下午 (1~12)
H 时 在一天中 (0~23)
m 分
s 秒
S 毫秒
E 星期
D 一年中的第几天
F 一月中第几个星期几
w 一年中第几个星期
W 一月中第几个星期
a 上午 / 下午 标记符
k 时 在一天中 (1~24)
K 时 在上午或下午 (0~11)
z 时区
1.获取当前时间的时间戳
方式一:
long time = System.currentTimeMillis();
方式二:
Date date = new Date(); long time = date.getTime();
方式三:
Calendar calendar = Calendar.getInstance(); long time = calendar.getTimeInMillis();
方式四:
Clock clock = Clock.systemUTC(); long time = clock.millis();
2.获取当前客户端时间
Date date = new Date();
示例:Tue May 26 16:10:39 CST 2020
3.字符串转日期
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); String str = "2020/05/26 19:20:00"; try { Date date1 = sdf.parse(str); System.out.println(date1); } catch (ParseException e) { e.printStackTrace(); }
结果:Tue May 26 19:20:00 CST 2020
4.日期转字符串
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date now = new Date();
String str = sdf.format(now);
System.out.println(str);
结果:2020-05-26
5.日期比较
直接用Date自带方法before()和after()比较
String startDate = "2020-05-23";
String endDate = "2020-05-25";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
Date sd1 = sdf.parse(startDate);
Date sd2 = sdf.parse(endDate);
System.out.println(sd1.before(sd2));//true
System.out.println(sd1.after(sd2));//false
} catch (ParseException e) {
e.printStackTrace();
}
用String的compareTo()方法比较
String startDate = "2020-05-23";
String endDate = "2020-05-25"; if(startDate.compareTo(endDate)< 0){ System.out.println("开始日期小于结束日期!"); }else { System.out.println("开始日期大于结束日期!"); }
输出:开始日期小于结束日期!
使用Date日期的getTime()方法转换为秒数后比较
Date date1 = new Date();
Date date2 = new Date(System.currentTimeMillis() - 100);//当前时间的100秒前
if(date1.getTime() > date2.getTime()){
System.out.println("date1 大于 date2");
}
输出: date1 大于 date2
5.MySQL日期相关
见:https://www.cnblogs.com/zhukf/p/11956270.html
6.判断两个日期年份月份是否相同
public static boolean isSameDate(Date date1, Date date2) {
try {
Calendar cal1 = Calendar.getInstance();
cal1.setTime(date1);
Calendar cal2 = Calendar.getInstance();
cal2.setTime(date2);
boolean isSameYear = cal1.get(Calendar.YEAR) == cal2
.get(Calendar.YEAR);
boolean isSameMonth = isSameYear
&& cal1.get(Calendar.MONTH) == cal2.get(Calendar.MONTH);
boolean isSameDate = isSameMonth
&& cal1.get(Calendar.DAY_OF_MONTH) == cal2
.get(Calendar.DAY_OF_MONTH);
return isSameDate;
} catch (Exception e) {
log.error("[RatingEngine] error occurred: ERROR ", e);
}
return false;
}
转自:https://blog.csdn.net/qq_33366229/article/details/78256962
Calendar是一个抽象类,所以不能实例化,但是可以调用getInstance()静态方法获得Calendar实例
//调用静态方法获取Calendar实例(使用默认的TimeZone和Locale) Calendar calendar1 = Calendar.getInstance();
// 获取时间戳(13位),毫秒 long timeStamp = calendar1.getTimeInMillis(); // 获取Date对象 Date date1 = calendar1.getTime(); // 设置时间 Date date2 = new Date(System.currentTimeMillis() - 100); calendar1.setTime(date2); // 获取Calendar的字段值(比如YEAR、MONTH....) final int month = calendar1.get(Calendar.MONTH); System.out.println(month); // 注意,month从0开始计算,9月返回8 // 修改时间(为指定字段进行计算) calendar1.add(Calendar.YEAR, -1); // 当前是2019年,这里将年份减1 System.out.println(calendar1.get(Calendar.YEAR)); // 2018 // 其他字段,比如月、天、时分秒的计算都是一样的做法 // 获取某个字段的最大值(同样可以有对应的接口获取最小值) int maxDay = calendar1.getActualMaximum(Calendar.DAY_OF_MONTH); System.out.println(maxDay); // 2018年9月,最多有30天 Calendar calendar2 = Calendar.getInstance(); // 设置指定字段值,注意,月份是从0开始计数 calendar2.set(Calendar.YEAR, 2030); // 设置年月日 calendar2.set(2029, 11, 5); System.out.println(calendar2.getTime()); // Wed Dec 05 18:06:30 CST 2029 // 设置年月日时分秒 calendar2.set(2030,10, 4, 12, 58, 59);

浙公网安备 33010602011771号