求解几个日期方法:每月第一天,最后一天,指定时间段内的所有日期序列。
如题,求解几个日期操作的方法:
1.每月的第一天:输入一个 yyyy-MM-dd 格式的日期,返回该月的第一天的yyyy-MM-dd格式的字符串。
2.每月的最后一天:输入一个 yyyy-MM-dd 格式的日期,返回该月的最后一天的yyyy-MM-dd格式的字符串。例如 2007-02-28 闰年则是 2008-02-29
3.指定时间段内的所有日期序列:例如输入 2007-08-29 ,2007-09-02,则返回
2007-08-29,2007-08-30,2007-08-31,,,2007-09-02 的List 或String[]
请大侠们支招。百分感谢。
------解决方案--------------------public class DateTime
{
public DateTime()
{
}
/**
* 取年日期时间
* @return String 返回 yyyy-MM-dd
*/
public static String getdate(Date date) {
java.text.SimpleDateFormat formatter_f = new java.text.SimpleDateFormat(
"yyyy-MM-dd ");
String new_date_f = formatter_f.format(date); //将日期时间格式化
return new_date_f;
}
------解决方案--------------------import
java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
public class Test {
private static SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd ");
public static void main(String[] args) throws
ParseException {
Date date = sdf.parse( "2007-09-25 ");
Date date2 = sdf.parse( "2007-10-2 ");
System.out.println(sdf.format(getFirstMonthDay(date)));
System.out.println(sdf.format(getLastMonthDay(date)));
List <Date> list = getAllDates(date, date2);
for(Date d : list) {
System.out.println(sdf.format(d));
}
}
public static Date getFirstMonthDay(Date date) {
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
calendar.set(Calendar.DATE, calendar.getActualMinimum(Calendar.DATE));
return calendar.getTime();
}
public static Date getLastMonthDay(Date date) {
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DATE));
return calendar.getTime();
}
public static List <Date> getAllDates(Date start, Date end) {
Calendar calendar1 = new GregorianCalendar();
calendar1.setTime(start);
Calendar calendar2 = new GregorianCalendar();
calendar2.setTime(end);
List <Date> list = new ArrayList <Date> ();
list.add(start);
while(calendar1.compareTo(calendar2) < 0) {
calendar1.add(Calendar.DATE, 1);
list.add(calendar1.getTime());
}
return list;
}
}
------解决方案--------------------在火龙果程序里面加个这个
public static List <Date> getMonths(Date start, Date end) {
Calendar calendar1 = new GregorianCalendar();
calendar1.setTime(start);
Calendar calendar2 = new GregorianCalendar();
calendar2.setTime(end);
List <Date> list = new ArrayList <Date> ();
while (calendar1.compareTo(calendar2) < 0) {
list.add(calendar1.getTime());
calendar1.add(Calendar.MONTH, 1);
}
list.add(calendar1.getTime());
return list;
}
在main里面加个
List <Date> list2 = getMonths(date, date2);
SimpleDateFormat sdf2 = new SimpleDateFormat( "yyyy-MM ");
for (Date d : list2) {
System.out.println(sdf2.format(d));