java时间相减
❶ java 解决时间相减问题
//可以参照一下。
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class JavaTest {
/**
* @param args
* @throws ParseException
*/
public static void main(String[] args) throws ParseException {
// TODO Auto-generated method stub
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.util.Date now = df.parse("2004-03-26 13:31:34");
java.util.Date date=df.parse("2004-01-02 11:30:53");
long l=now.getTime()-date.getTime();
long day=l/(24*60*60*1000);
long hour=(l/(60*60*1000)-day*24);
long min=((l/(60*1000))-day*24*60-hour*60);
long s=(l/1000-day*24*60*60-hour*60*60-min*60);
System.out.println(""+day+"天"+hour+"小时"+min+"分"+s+"秒");
}
}
❷ java实现两个时间相减得到年月
大概判断了一下,比较粗糙,仅供参考。
privatestaticvoidfunction17()throwsException{
Scannersc=newScanner(System.in);
SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd");
System.out.println("请输入起始时间");
Datedate1=sdf.parse(sc.next());
System.out.println("请输入截止时间");
Datedate2=sdf.parse(sc.next());
longtime1=date1.getTime();
longtime2=date2.getTime();
longtime=(time2-time1)/1000;
longyear=time/(24*3600*365);
longmonth=time%(24*3600*365)/(24*3600*30);
if(year>0){
System.out.println(year+"年"+month+"月");
}else{
System.out.println(month+"月");
}
}
❸ java 时间(Date)相减为何出现负数
你的问题其实跟日期没关系,你的问题其实可以描述为下面这样:
long diff = 2160000000;
int result = (int)(diff)/1000/60/60/24;
System.out.println(result);
为什么经过计算后result结果为负数,原因是因为在java语言中int类型的取值范围是:-2147483648~2147483647,而你给的long型的diff超出了2147483647的最大值,导致最高位符号位变成了1,于是经过强制类型转换(int)(diff)之后,已经就是一个负数了,所以除法运算的结果也就成了负数。而当diff等于2073600000的时候,这个值并没有超出int类型的范围,所以计算出的结果是正数
❹ java时间加减
Datedate=newDate("2014/1/1018:20");
Datedate2=newDate("2014/1/113:5");
longtemp=date2.getTime()-date.getTime();//相差毫秒数
longhours=temp/1000/3600;//相差小时数
longtemp2=temp%(1000*3600);
longmins=temp2/1000/60;//相差分钟数
System.out.println("date2与date相差"+hours+"小时"+mins+"分钟");
****************************************希望能够帮助到你!************************************************
如果我的回答对你有帮助,
别忘了点击我的回答下方【选为满意答案】按钮。
谢谢!
❺ java中日期怎么相减
呵呵,你这个错误犯得很好,因为偶曾经也犯过。
你去查查calendar的API,看看mouth是从几开始的,你写3进去,到底最终的日期是多少呢?
Calendarcalendar=Calendar.getInstance();
calendar.set(2015,3,1);
SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd");
System.out.println(sdf.format(calendar.getTime()));
看看结果啊,哈哈。
❻ java 如何将日期年份相减
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Admin {
private static Format f = new SimpleDateFormat("yyyy-MM-dd");
public static void main(String... args) {
Date thisYear = new Date();
System.out.println(formatDate2YYYYMMDD(thisYear));
Date lastYear = lastYear(thisYear);
System.out.println(formatDate2YYYYMMDD(lastYear));
}
private static Date lastYear(Date thisYear) {
Calendar c = Calendar.getInstance();
c.setTime(thisYear);
c.add(Calendar.YEAR, -1);
return c.getTime();
}
private static String formatDate2YYYYMMDD(Date date) {
return f.format(date);
}
}
❼ java 中 日期如何相加减
这个东西很简单。
现在是2004-03-26 13:31:40
过去是:2004-01-02 11:30:24
要获得两个日期差,差的形式为:XX天XX小时XX分XX秒
方法一:
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try
{
Date d1 = df.parse("2004-03-26 13:31:40");
Date d2 = df.parse("2004-01-02 11:30:24");
long diff = d1.getTime() - d2.getTime();
long days = diff / (1000 * 60 * 60 * 24);
}
catch (Exception e)
{
}
方法二:
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.util.Date now = df.parse("2004-03-26 13:31:40");
java.util.Date date=df.parse("2004-01-02 11:30:24");
long l=now.getTime()-date.getTime();
long day=l/(24*60*60*1000);
long hour=(l/(60*60*1000)-day*24);
long min=((l/(60*1000))-day*24*60-hour*60);
long s=(l/1000-day*24*60*60-hour*60*60-min*60);
System.out.println(""+day+"天"+hour+"小时"+min+"分"+s+"秒");
方法三:
SimpleDateFormat dfs = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.util.Date begin=dfs.parse("2004-01-02 11:30:24");
java.util.Date end = dfs.parse("2004-03-26 13:31:40");
long between=(end.getTime()-begin.getTime())/1000;//除以1000是为了转换成秒
long day1=between/(24*3600);
long hour1=between%(24*3600)/3600;
long minute1=between%3600/60;
long second1=between%60/60;
System.out.println(""+day1+"天"+hour1+"小时"+minute1+"分"+second1+"秒");
❽ 如何用JAVA把两个时间相减
调试过的程序,可以直接运行`!!!!!!
import java.util.Date;
import com.ibm.icu.text.SimpleDateFormat;
public class mss {
public mss() {
}
public long fromDateStringToLong(String inVal) { //此方法计算时间毫秒
Date date = null; //定义时间类型
SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-mm-dd hh:ss");
try {
date = inputFormat.parse(inVal); //将字符型转换成日期型
} catch (Exception e) {
e.printStackTrace();
}
return date.getTime(); //返回毫秒数
}
private static String dqsj() { //此方法用于获得当前系统时间(格式类型2007-11-6 15:10:58)
Date date = new Date(); //实例化日期类型
String today = date.toLocaleString(); //获取当前时间
System.out.println("获得当前系统时间 "+today); //显示
return today; //返回当前时间
}
public static void main(String[] args) {
String dqsj = dqsj(); //获得String dqsj = dqsj(); //获得当前系统时间
mss df = new mss(); //实例化方法
long startT=df.fromDateStringToLong("2005-03-03 14:51:23"); //定义上机时间
long endT=df.fromDateStringToLong("2004-03-03 13:50:23"); //定义下机时间
long ss=(startT-endT)/(1000); //共计秒数
int MM = (int)ss/60; //共计分钟数
int hh=(int)ss/3600; //共计小时数
int dd=(int)hh/24; //共计天数
System.out.println("共"+dd+"天 准确时间是:"+hh+" 小时 "+MM+" 分钟"+ss+" 秒 共计:"+ss*1000+" 毫秒");
}
}
这是执行结果``
获得当前系统时间 2007-11-6 15:57:39
共366天 准确时间是:8785 小时 527100 分钟31626001 秒 共计:31626001000 毫秒