比如 2015-02-03(日期类型)开始算 10年2月3天后是什么日期
2015-02-03(日期类型)开始算 10年后是什么日期
2015-02-03(日期类型)开始算 2月3天后是什么日期
2015-02-03(日期类型)开始算 3天后是什么日期
2015-02-03(日期类型)开始算 10年0月3天后是什么日期
2015-02-03(日期类型)开始算 2月3天后是什么日期
2015-02-03(日期类型)开始算 3天后是什么日期
这里的 2015-02-03(日期类型)是指定的,我想要任意时间。
求代码
private static Date calculatingTime(Date date,Integer year,Integer Moth,Integer days){
Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.YEAR, null == year ? 0 : year);
c.add(Calendar.MONTH, null == Moth ? 0 : Moth);
c.add(Calendar.DATE, null == days ? 0 : days);
Date time = c.getTime();
return time;
}
public static void main(String[] args) {
Date calculatingTime = calculatingTime(new Date(),1,1,5);
System.out.println(calculatingTime.toLocaleString());
}
就这样子,加的年数,月数,日数
<script>
function getDate(date, addstr) {
addstr.replace(/(\d+)([年月天])/g, function (s0, s1, s2) {
switch (s2) {
case '年': date.setFullYear(date.getFullYear() + parseInt(s1)); break;
case '月': date.setMonth(date.getMonth() + parseInt(s1)); break;
case '天': date.setDate(date.getDate() + parseInt(s1)); break;
}
});
return date;
}
console.log(getDate(new Date('2015/2/3'), '10年').toLocaleDateString())
console.log(getDate(new Date('2015/2/3'), '2月3天').toLocaleDateString())
console.log(getDate(new Date('2015/2/3'), '3天').toLocaleDateString())
console.log(getDate(new Date('2015/2/3'), '10年0月3天').toLocaleDateString())
</script>
你如果传的字符串就用sdf转一下好咯,前面的已经写了,我改了一下
private static Date calculatingTime(Date date, String add) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
Date tmp = null;
try {
tmp = sdf.parse(add);
} catch (ParseException e) {
System.out.println("日期格式不符");
e.printStackTrace();
return null;
}
Calendar c = Calendar.getInstance();
c.setTime(tmp);
int year = c.get(Calendar.YEAR);
int Moth = c.get(Calendar.MONTH);
int days = c.get(Calendar.DAY_OF_MONTH);
c.setTime(date);
c.add(Calendar.YEAR, year);
c.add(Calendar.MONTH, Moth);
c.add(Calendar.DATE, days);
Date time = c.getTime();
return time;
}
想了一下,如果日子刚好卡了个进位到月的闰年可能会出问题,还是这样做比较保险
private static Date calculatingTime(Date date, String add) {
String[] str = add.split("年");
Integer year = Integer.parseInt(str[0]);
str = str[1].split("月");
Integer Moth = Integer.parseInt(str[0]);
str = str[1].split("日");
Integer days = Integer.parseInt(str[0]);
Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.YEAR, year);
c.add(Calendar.MONTH, Moth);
c.add(Calendar.DATE, days);
Date time = c.getTime();
return time;
}
public Date addStr(String str){
int nianIndex = str.indexOf("年");
int yueIndex = str.indexOf("月");
int tianIndex = str.indexOf("天");
Long addTimer = 0L;
int nian = Integer.parseInt(str.substring(0, nianIndex));
addTimer += nian*365*24*60*60*1000;
int yue = Integer.parseInt(str.substring(nianIndex+1, yueIndex));
addTimer += yue*30*24*60*60*1000;//这里要看一个月多少天,这里按30天算的
int tian = Integer.parseInt(str.substring(yueIndex+1, tianIndex));
addTimer += tian*24*60*60*1000;
Long currentTime = System.currentTimeMillis();
Date date = new Date(currentTime+addTimer);
return date;
}