我要跟据当月日期处理数据(2008-1-1 到 2008-1-31号),怎样用java来取得每月第一天与最后一天
解决方案 »
- 求高手帮忙解决问题 JAVA -IO
- 从键盘任意输入1-9的数字以逗号分割,然后达到以上结果,我该怎么处理,在线等========
- Java里Object类下的registerNatives()方法是干啥的?
- 有办法在JAVA里返回地址吗?
- .java文件名 必须和第一个类同名吗
- class Hen implements A{}没有实现Protectable呀那为什么它里面可以有public void beProtected()『』?
- 再问:怎么消除在applet的paint()中画图时抖动的问题!!
- 今天碰到的一个很多人都说是第一次碰到,而且想都没想到的问题,发出来共享一下
- 利用命令行运行java程序出现的问题
- 请教几个简单问题哦。(applet加图片,jtree的拖放,panel加图标)
- 你好
- 也问个正则表达式的问题
Calendar calCurr = Calendar.getInstance();
calCurr.set(Calendar.DAY_OF_MONTH, calCurr.getActualMaximum(GregorianCalendar.DAY_OF_MONTH));
Date lastDayOfTheMonth = calCurr.getTime();
calCurr.set(Calendar.DAY_OF_MONTH, 1);
Date firstDayOfTheMonth = calCurr.getTime();
* 取当月的开始日期与结束日期
* @return String[] String[0]:开始日期 String[1]:结束日期
*/
public static String[] beginEndDate() {
String beginTime = null;
String endTime = null;
String [] dateArray = new String[2];
Date currentDate = new Date();
SimpleDateFormat formatDate = new SimpleDateFormat("yyyy-MM");
System.out.println("formatDate: " + formatDate.format(currentDate));
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DATE, 1); //设置当月的第一天
beginTime=calendar.get(Calendar.DATE)+"";
calendar.roll(Calendar.DATE,-1);//当月日期回滚一天,就是最后一天
endTime=calendar.get(Calendar.DATE)+"";
beginTime=formatDate.format(currentDate) + "-0" +beginTime;
endTime=formatDate.format(currentDate)+ "-" +endTime;
System.out.println(beginTime + " to " + endTime);
dateArray[0]=beginTime;
dateArray[1]=endTime;
return dateArray;
}
/**
* 获取某月份的第一天和最后一天
* @param diffMonth 相差月份的值,即-1代表求上一个月,0代表求当月,1代表求下月,依此类推
*/
public static void printStartDayAndEndDay( Integer diffMonth ){
SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd" );
Calendar calendar = Calendar.getInstance();
calendar.add( Calendar.MONTH , diffMonth );
//第一天
calendar.set( Calendar.DATE , 1 );
String dayFirst = dateFormat.format( calendar.getTime() );
System.out.println( dayFirst ); //月份加1,再设置成月份的第一天,再减去1天,即变成上月的最后一天。
calendar.add( Calendar.MONTH , 1 );
calendar.set( Calendar.DATE , 1 );
calendar.add( Calendar.DATE , -1 );
String dayEnd = dateFormat.format( calendar.getTime() );
System.out.println( dayEnd );
}
你参照一下http://www.bbsvs.com/j2ee/thread-41-1-1.aspx
* 获取给定日期和天数后的日期 给定日期必须为8位
* 给定天数为正整数,则向后推日期,如:date=20060214,numOfDay=5 则返回 20060219
* 给定天数为负整数,则向前推日期,如:date=20060214,numOfDay=-5 则返回 20060209
* @param date 给定日期
* @param numOfDay 给定天数
* @return String
*/
public static String pbfGetNextDate(String date, int numOfDay) {
Date nextDate = null;
if (date.length() == 8) {
if (new TRPBF().pbfCheckDate(date)) {
int year = Integer.parseInt(date.substring(0, 4));
int month = Integer.parseInt(date.substring(4, 6));
int day = Integer.parseInt(date.substring(6, 8));
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
java.util.GregorianCalendar gcal = new java.util.GregorianCalendar(year,
month - 1, day);
try {
gcal.add(gcal.DATE, numOfDay);
nextDate = gcal.getTime();
return simpleDateFormat.format(nextDate);
}
catch (Exception ex) {
return failed;
}
}
else {
return failed;
}
}
else {
return failed;
}
} /**
* 获取给定日期时间和小时后的日期 给定日期时间必须为14位
* 给定小时为正整数,则向后推 同pbfGetNextDate
* 给定小时为负整数,则向前推 同pbfGetNextDate
* @param dateTime 给定日期
* @param numOfHours 给定小时
* @return String
*/
public static String pbfGetNextDateH(String dateTime, int numOfHours) {
Date nextDateTime = null;
if (dateTime.length() == 14) {
if (new TRPBF().pbfCheckDateTime(dateTime)) {
int year = Integer.parseInt(dateTime.substring(0, 4));
int month = Integer.parseInt(dateTime.substring(4, 6));
int day = Integer.parseInt(dateTime.substring(6, 8));
int hours = Integer.parseInt(dateTime.substring(8, 10));
int minute = Integer.parseInt(dateTime.substring(10, 12));
int second = Integer.parseInt(dateTime.substring(12, 14));
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(
"yyyyMMddHHmmss");
java.util.GregorianCalendar gcal = new java.util.GregorianCalendar(
year, month - 1, day, hours, minute, second);
try {
gcal.add(gcal.HOUR_OF_DAY, numOfHours);
nextDateTime = gcal.getTime();
return simpleDateFormat.format(nextDateTime);
}
catch (Exception ex) {
return failed;
}
}
else {
return failed;
}
}
else {
return failed;
}
} /**
* 获取给定日期和月数后的日期 给定日期必须为8位
* 给定月数为正整数,则向后推 同pbfGetNextDate
* 给定月数为负整数,则向前推 同pbfGetNextDate
* @param date 给定日期
* @param numOfMonth 给定月数
* @return String
*/
public static String pbfGetNextDateM(String date, int numOfMonth) {
Date nextDate = null;
if (date.length() == 8) {
if (new TRPBF().pbfCheckDate(date)) {
int year = Integer.parseInt(date.substring(0, 4));
int month = Integer.parseInt(date.substring(4, 6));
int day = Integer.parseInt(date.substring(6, 8));
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
java.util.GregorianCalendar gcal = new java.util.GregorianCalendar(year,
month - 1, day);
try {
gcal.add(gcal.MONTH, numOfMonth);
nextDate = gcal.getTime();
return simpleDateFormat.format(nextDate);
}
catch (Exception ex) {
return failed;
}
}
else {
return failed;
}
}
else {
return failed;
}
} /**
* 获取给定年月的最后(最大)日期 传入yearMonth必须为6位
* 如:传入yearMonth=20002 则返回 20060229
* @param year
* @param month
* @return String
*/
public static String pbfGetLastDate(String yearMonth) {
String year = null;
String month = null;
if (yearMonth.length() == 6) {
year = yearMonth.substring(0, 4);
month = yearMonth.substring(4, 6);
if (Integer.parseInt(year) < 1900 || Integer.parseInt(month) < 0 ||
Integer.parseInt(month) > 12) {
return failed;
}
else {
GregorianCalendar gcal = new GregorianCalendar(Integer.parseInt(
year),
Integer.parseInt(month), 0);
int maxDayOfMonth = gcal.getActualMaximum(gcal.DAY_OF_MONTH);
return year + month + String.valueOf(maxDayOfMonth);
}
}
else {
return failed;
}
} /**
* 获取给定日期的周数 传入日期必须为8位
* 如:传入 date=20060214 则返回 2 (20060214是周2)
* @param date
* @return String
*/
public static String pbfGetWeek(String date) {
if (date.length() == 8) {
if (new TRPBF().pbfCheckDate(date)) {
int year = Integer.parseInt(date.substring(0, 4));
int month = Integer.parseInt(date.substring(4, 6));
int day = Integer.parseInt(date.substring(6, 8));
GregorianCalendar gcal = new GregorianCalendar(year, month - 1, day);
int week = gcal.get(gcal.DAY_OF_WEEK) - gcal.getFirstDayOfWeek();
return String.valueOf(week);
}
else {
return failed;
}
}
else {
return failed;
}
} /**
* 获取给定两个日期间的间隔 传入日期必须为8位
* 间隔区分 0:month 1:day 2:hours 3:minute 4:second
* @param date1 日期1
* @param date2 日期2
* @param diff
* @return String
*/
public static String pbfGetDiffDate(String date1, String date2, int diff) {
long num = 0;
if (date1.length() == 8 && date2.length() == 8) {
if (!new TRPBF().pbfCheckDate(date1) || !new TRPBF().pbfCheckDate(date2)) {
return failed;
}
else {
int year1 = Integer.parseInt(date1.substring(0, 4));
int year2 = Integer.parseInt(date2.substring(0, 4));
int month1 = Integer.parseInt(date1.substring(4, 6));
int month2 = Integer.parseInt(date2.substring(4, 6));
int day1 = Integer.parseInt(date1.substring(6, 8));
int day2 = Integer.parseInt(date2.substring(6, 8));
java.util.GregorianCalendar gcal1 = new GregorianCalendar(year1,
month1 - 1, day1);
java.util.GregorianCalendar gcal2 = new GregorianCalendar(year2,
month2 - 1, day2);
switch (diff) {
case 0:
num = (year1 * 12 + month1) - (year2 * 12 + month2);
break;
case 1:
num = (gcal1.getTimeInMillis() - gcal2.getTimeInMillis()) / 1000 /
60 / 60 / 24;
break;
case 2:
num = (gcal1.getTimeInMillis() - gcal2.getTimeInMillis()) / 1000 /
60 / 60;
break;
case 3:
num = (gcal1.getTimeInMillis() - gcal2.getTimeInMillis()) / 1000 /
60;
break;
case 4:
num = (gcal1.getTimeInMillis() - gcal2.getTimeInMillis()) / 1000;
break;
default:
return failed;
}
return String.valueOf(Math.abs(num));
}
}
else {
return failed;
}
}