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
);