版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chenbetter1996/article/details/82812959
SimpleDateFormat是个用得很高频率的时间处理类
该对象的俩个主要方法:
parse方法:将字符串类型(java.lang.String)解析为日期类型(java.util.Date)
format方法:将日期类型(Date)数据格式化为字符串(String)
问题:使用SimpleDateFormat对象format调用函数parse("时间字符串")打印到12点和24点的时候都会变成00点
public static long getMinuteGap(String fromTime, String toTime) throws ParseException { // 传递的参数计算到了秒钟
SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm");
// 注意:遇到12点会变成00
Date fromM = simpleFormat.parse(fromTime.substring(0, 16)); // 截取到分钟
Date toM = simpleFormat.parse(toTime.substring(0, 16));
System.out.println("截取到分钟的fromM:" + fromM.toString()); // 变成00:52了
System.out.println("截取到分钟的ToM:" + toM.toString());
long from = fromM.getTime();
long to = toM.getTime();
int gap = (int) ((to - from) / (1000 * 60));
System.out.println("util.CountTimeGap 两个时间之间的分钟差gap为:" + gap);
return gap;
}
public static void main(String[] args) throws ParseException {
String fromTime="2018-09-21 12:52:16";
String toTime = "2018-09-22 12:30:32";
System.out.println(getMinuteGap(fromTime, toTime));
}
截取到分钟的fromM:Fri Sep 21 00:52:00 CST 2018
截取到分钟的ToM:Sat Sep 22 00:30:00 CST 2018
util.CountTimeGap 两个时间之间的分钟差gap为:1418
1418
这里主要是计算两个时间字符串对应的时间差(分钟单位)多少输入的12:52:16,12:30:32都变成了00:52:16,00:30:00.
原因:
new SimpleDateFormat("格式"),的参数格式 yyyy-MM-dd hh:mm, 小时打成了小写的hh
HH是24小时制,hh是12小时制
此外:提醒下,SimpleDateFormat是线程不安全的,推荐为每个线程创建单独的format实例。如果多线程并发访问同一个format实例,必须加同步操作。