java日期时间的运算
由于最近在使用日期时间的加减算法(如加一天,加一年等等),所以整理了一下常用的日期时间的例子,javaJDk也是有提供了Calendar类包方便大家使用。不多说直接上代码~
1,当前时间的加减
` //指定时间输出格式
SimpleDateFormat sdf=new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss”);
Date dt = new Date();
System.out.println("当前时间:" + sdf.format(dt));
Calendar rightNow = Calendar.getInstance();
rightNow.setTime(dt);
rightNow.add(Calendar.MINUTE,-30);//当时日期减30分钟
System.out.println("减半小时:" + sdf.format(rightNow.getTime()));
long timeInMillis = rightNow.getTimeInMillis();//将时间转成long类型
rightNow.add(Calendar.MONTH,3);//(在刚才的结果上)再加3个月
System.out.println("再加3个月:" + sdf.format(rightNow.getTime()));
rightNow.add(Calendar.DAY_OF_YEAR,10);//(在刚才的结果上)再加10天
System.out.println("再加10天:" + sdf.format(rightNow.getTime()));`
2,两个带格式的时间相减的差
String currentTime = "2016-05-12 10:55:36";//获取当前时间
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.util.Date now = df.parse(currentTime);//将带格式的时间变回long类型
java.util.Date date=df.parse("2016-05-12 23:59:59");
long l=date.getTime()-now.getTime();
long day= 0,hour =0,min=0,s =0;
if(l>=0){
day=l/(24*60*60*1000);
hour=(l/(60*60*1000)-day*24);
min=((l/(60*1000))-day*24*60-hour*60);
s=(l/1000-day*24*60*60-hour*60*60-min*60);
}
3,时间格式与时间戳相互转换
/**
* 将时间转换为时间戳
* @param format "yyyy-MM-dd HH:mm:ss"
* @param Stamp 时间戳
* @return
*/
public static Long dateToStamp(String format,String Stamp) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
Date date = null;
try {
date = simpleDateFormat.parse(Stamp);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return date.getTime();
}
/**
* 将时间戳转换为时间
* @param format "yyyy-MM-dd HH:mm:ss"
* @param s 时间戳
* @return
*/
public static String stampToDate(String format , String s){
String res;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
long lt = new Long(s);
Date date = new Date(lt);
res = simpleDateFormat.format(date);
return res;
}