我有一段日期
String begtime = “2008-11-11”;(不确定)
String endtime = “2008-11-15”;(不确定)我想得到两段日期之间的日期,比如“2008-11-12”,“2008-11-13”,“2008-11-14”请问如何计算
String begtime = “2008-11-11”;(不确定)
String endtime = “2008-11-15”;(不确定)我想得到两段日期之间的日期,比如“2008-11-12”,“2008-11-13”,“2008-11-14”请问如何计算
也可以直接使用Date方法 分别对年月日相减。哎 方法挺笨的。
期待楼下的解答。
在开始的java.util.Calendar上每日加1,
与结束的java.util.Calendar相比,
可以找到中间的日期。
* 对输入的日期dt移动num个单位prdM后得到的日期
* @param dt :输入的日期(yyyymmdd)
* @param num :数量
* @param prdM :移动单位(D:天 M:月 Y:年)
* @param dtFormat : 日期的格式(yyyyMMdd)
* @return
*/
public static String moveDate(String dt,String dtFormat,int num,String prdM)
{
if(dt==null||dt.length()<=0)
return "";
SimpleDateFormat format = new SimpleDateFormat(dtFormat);
Date date = null;
try {
date = format.parse(dt);
} catch (ParseException e) {
System.out.println("日期格式转换错误!!!");
e.printStackTrace();
return "";
}
GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
gc.setTime(date);
char type = prdM.charAt(0);
switch(type)
{
case 'M':
case 'm':
gc.add(Calendar.MONTH,num);
break;
case 'd':
case 'D':
gc.add(Calendar.DATE,num);
break;
case 'Y':
case 'y':
gc.add(Calendar.YEAR,num);
break;
}
return format.format(gc.getTime());
}
public static void main(String args[]){
java.util.Calendar c = java.util.Calendar.getInstance();
c.set(2008, 11, 11); //开始时间,你把你的时间set进去
java.util.Calendar d = java.util.Calendar.getInstance();
d.set(2008, 11, 15);//结束时间,你把你的时间set进去
while(c.get(java.util.Calendar.DAY_OF_MONTH)< d.get(java.util.Calendar.DAY_OF_MONTH) - 1)
{
c.add(java.util.Calendar.DAY_OF_MONTH, 1);
System.out.println(c.getTime());
}
}
String begtimeStr = "2008-11-11";
String endtimeStr = "2008-11-15";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date begtime,endtime,currentTime;
try {
begtime = sdf.parse(begtimeStr);
endtime = sdf.parse(endtimeStr);
} catch (Exception e) {
System.out.println("日期转化出错");
return;
}int days = (int) (endtime.getTime() - begtime.getTime()) / 86400000;
if(days <= 0) {
System.out.println("开始时间小于或等于结束时间");
return;
}for (int i = 0; i <= days; i++) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(begtime);
calendar.add(Calendar.DATE, i);
currentTime = calendar.getTime();
System.out.println("日期:"+sdf.format(currentTime));
}
for (int i = 0; i <= days; i++) 改成for (int i = 1; i < days; i++) 就不会输出边界日期了
package com.lihan;
public class Test {
public static void main(String args[]){
java.util.Calendar c = java.util.Calendar.getInstance();
c.set(2008, 11, 11); //开始时间,你把你的时间set进去
java.util.Calendar d = java.util.Calendar.getInstance();
d.set(2008, 11, 15);//结束时间,你把你的时间set进去
while(c.get(java.util.Calendar.DAY_OF_MONTH)< d.get(java.util.Calendar.DAY_OF_MONTH) - 1)
{
c.add(java.util.Calendar.DAY_OF_MONTH, 1);
System.out.println(c.getTime());
}
}
}
Fri Dec 12 11:10:02 CST 2008
Sat Dec 13 11:10:02 CST 2008
Sun Dec 14 11:10:02 CST 2008之后就是处理显示形式的问题的
public static void main(String[] args) throws ParseException {
DateFormat df = DateFormat.getDateInstance();
String sreDate = null;
Date beginDate = df.parse("2008-11-11");
Date endDate = df.parse("2008-11-23");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
while(beginDate.getTime()+24*60*60*1000<endDate.getTime()) {
Date getDate = new Date(beginDate.getTime()+24*60*60*1000);
sreDate = sdf.format(new Date(beginDate.getTime()+24*60*60*1000));
System.out.println(sreDate);
beginDate = getDate;
}
}
在使用Calendar 进行初始化时,月份从0开始,至11结束,
所以应该是
c.set(2008, 11, 11); //开始时间,2008年12月11日
private static void getDateInterval(String beDate, String enDate)
throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
long interval = 0L;// 两个时间的间隔毫秒数
int dayInterval = 0;// 间隔的天数
interval = sdf.parse(enDate).getTime() - sdf.parse(beDate).getTime();
dayInterval = (int) (interval / (1 * 24 * 60 * 60 * 1000));
Calendar calendar = Calendar.getInstance();
calendar.setTime(sdf.parse(beDate));
for (int i = 1; i < 4; i++) {
calendar.add(Calendar.DAY_OF_MONTH, 1);
System.out.println(sdf.format(calendar.getTime()));
}
}
public static void main(String[] args) throws Exception {
String begtime = "2008-11-11";
String endtime = "2008-11-15"; getDateInterval(begtime, endtime);
}
}
//运行结果:
2008-11-12
2008-11-13
2008-11-14
public class TempTest {
private static void getDateInterval(String beDate, String enDate)
throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
long interval = 0L;// 两个时间的间隔毫秒数
int dayInterval = 0;// 间隔的天数
interval = sdf.parse(enDate).getTime() - sdf.parse(beDate).getTime();
dayInterval = (int) (interval / (1 * 24 * 60 * 60 * 1000));
Calendar calendar = Calendar.getInstance();
calendar.setTime(sdf.parse(beDate));
for (int i = 1; i < 4; i++) {
calendar.add(Calendar.DAY_OF_MONTH, 1);
System.out.println(sdf.format(calendar.getTime()));
} }
public static void main(String[] args) throws Exception {
String begtime = "2008-11-11";
String endtime = "2008-11-15";
getDateInterval(begtime, endtime);
}
}
//运行结果:
2008-11-12
2008-11-13
2008-11-14
public static void test(){
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
try {
String begintime="2008-11-11";
String endtime="2008-11-15";
Calendar bt=Calendar.getInstance();
Calendar dt=Calendar.getInstance();
bt.setTime(format.parse(begintime));
dt.setTime(format.parse(endtime));
int days=(int)(dt.getTimeInMillis()-bt.getTimeInMillis())/1000/60/60/24;//计算两个日期相差的天数
for(int i=0;i<days;i++){
bt.add(Calendar.DAY_OF_MONTH, 1);
System.out.println(format.format(bt.getTime()));
}
} catch (Exception e) {
}
}
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String startDate = "2008-11-11";
String endDate = "2009-01-15";
String[] sdt = startDate.split("-");
String[] edt = endDate.split("-");
Calendar sc = Calendar.getInstance();
Calendar ec = Calendar.getInstance();
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date start = null;
Date end = null;
int[] sd = new int[]{Integer.parseInt(sdt[0]),Integer.parseInt(sdt[1]),Integer.parseInt(sdt[2])};
int[] ed = new int[]{Integer.parseInt(edt[0]),Integer.parseInt(edt[1]),Integer.parseInt(edt[2])};
sc.set(sd[0], sd[1]-1, sd[2]);
ec.set(ed[0], ed[1]-1, ed[2]-1);
do{
sc.add(Calendar.DATE, 1);
System.out.println(df.format(sc.getTime()));
}
while(sc.getTime().before(ec.getTime()));
}
}
String endDate = "2009-11-15";
long startTime= simpdate.parse(strdate1).getTime();
long endTime = simpdate.parse(strdate2).getTime();
int day = 0;
Date date = new Date();
day = (int)(endTime - startTime)/1000/60/60/24/1;
for(int i = 1;i < day;i++){
startTime += 1*24*60*60*1000;
date.setTime(startTime);
System.out.println(simpdate.format(date));
}