java实现两个日期相减得到中间的年份和月份
public class DateSimple {
public static void main(String[] args) {
String startTime = “2012-07-01”;
String endTime = “2014-07-31”;
String[] arg1 = startTime.split(“-“);
String[] arg2 = endTime.split(“-“);
int year1 = Integer.valueOf(arg1[0]);
int year2 = Integer.valueOf(arg2[0]);
int month1 = Integer.valueOf(arg1[1]);
int month2 = Integer.valueOf(arg2[1]);
for (int i = year1; i = year2; i++) {
int monthCount = 12;
int monthStart = 1;
if (i == year1) {
monthStart = month1;
monthCount = 12-monthStart+1;
} else if (i == year2) {
monthCount = month2;
}
for(int j = 0; j monthCount; j++){
int temp = monthStart+j;
if(temp =10){
System.out.println(i+”-“+(monthStart+j));
}else{
System.out.println(i+”-0″+(monthStart+j));
}
}
}
}
}
2012-07
2012-08
2012-09
2012-10
2012-11
2012-12
2013-01
2013-02
2013-03
2013-04
2013-05
2013-06
2013-07
2013-08
2013-09
2013-10
2013-11
2013-12
2014-01
2014-02
2014-03
2014-04
2014-05
2014-06
2014-07
java 时间类型相减(Timestamp) 得到秒
可以使用Java中的Timestamp类进行时间类型的相减,然后将结果转化为秒。
示例代码如下:
“`java
import java.sql.Timestamp;
import java.time.LocalDateTime;
public class TimestampDemo {
public static void main(String[] args) {
// 定义两个时间戳
Timestamp timestamp1 = Timestamp.valueOf(LocalDateTime.parse(“2015-05-04T12:15:17”));
Timestamp timestamp2 = Timestamp.valueOf(LocalDateTime.parse(“2015-05-04T12:13:11”));
// 计算时间差
long diff = timestamp1.getTime() – timestamp2.getTime();
// 转换为秒并输出
System.out.println(“相差 ” + diff / 1000 + ” 秒”);
}
}
“`
在以上代码中,首先定义了两个时间戳 `timestamp1` 和 `timestamp2` 分别表示2015-5-412:15:17和2015-5-412:13:11。然后通过 `getTime()` 方法获取两个时间戳的毫秒数差值,并将其除以1000得到相差的秒数。
执行以上代码,输出结果为:
“`
相差 126 秒
“`
因此,2015-5-412:15:17减去2015-5-412:13:11得到相减后两个时间之间相差126秒。
java 两个日期相减的怎么做?
对已日期相减,最高效的做法就是将二者都转换成毫秒,相减之后再根据你的需求进行单位转换,比如你想显示相差的秒数,就除以1000,以此类推,翠花,上代码:
/* 随便选两个时间 */
String d1 = “2015-04-17”;
String d2 = “2015-06-17”;
/* 先转成毫秒并求差 */
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd”);
long m = sdf.parse(d2).getTime() – sdf.parse(d1).getTime();
/* 根据你的需求进行单位转换 */
System.out.println(“相差毫秒数:”+ m );
System.out.println(“相差天数:”+ ( m / (1000 * 60 * 60 * 24) ) );
要注意的地方:
时间格式可能有很多种,比如20150611或者2015年6月11日等等。所以你需要以对应的方式来初始化SimpleDateFormat对象。
例如20150611,就要写成:
SimpleDateFormat sdf = new SimpleDateFormat(“yyyyMMdd”);
SimpleDateFormat类是非线程安全的,所以在高并发下需要加同步锁,否则会出现灵异事件。