首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

一道简单的日期有关问题,只花你几分钟

2012-02-03 
一道简单的日期问题,只花你几分钟取得指定日期所在月的第一天和最后一天比如:指定日期2007-8-8去所在月的

一道简单的日期问题,只花你几分钟
取得指定日期所在月的第一天和最后一天  
比如:指定日期2007-8-8   去所在月的   第一天   2007-8-1  
                                                                    最后一天2007-8-31

[解决办法]
LZ可以写一下自己写一下吗?这个不会太难的,不过你要注意想2月,之类的!!!
[解决办法]
//取得 某年某月的天数
//月的数值为 0-11
int[] days = new int[]{31,28,31,30,31,30,31,31,30,31,30,31};
public int getDays(int year,int month)
{
if(month == 1){
if(year%4 == 0){
if(year%100 == 0){
return 28;
}else{
return 29;
}
}else{
return 28;
}
}
else{
return days[month];
}
}

// 给出一个日期 date ,取得该日期所在月的最后一天
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal_temp.clear();
cal_temp.set(cal.get(Calendar.YEAR),cal.get(Calendar.MONTH),getDays(cal.get(Calendar.YEAR),cal.get(Calendar.MONTH)));
cal_temp.getTime() //就是 date 所在月的最后一天.
[解决办法]
int year=2007;
int month=8;
java.util.Calendar c=java.util.Calendar.getInstance();
c.set(year,month-1,1);
java.util.Date first=c.getTime();
c.set(year,month,0);
java.util.Date last=c.getTime();
System.out.println(first.toLocaleString());
System.out.println(last.toLocaleString());
[解决办法]
用Calendar
8-1很好做,直接set一下DATE为1就好了
8-31,看看add方法,直接对当前时间月份+1到9月,然后set到9月1日,然后add(Calendar.DATE,-1)//也就是减1天
[解决办法]
学习~~
[解决办法]
Calendar c = Calendar.getInstance();
c.set(c.YEAR, 2001);
c.set(c.MONTH, 0);
System.out.println(c.getActualMaximum(c.DAY_OF_MONTH)); //一个月的最大天数
System.out.println(c.getActualMinimum(c.DAY_OF_MONTH)); //一个月的最小天数
[解决办法]
int year = 2007;
int month = 8;
Calendar c = new GregorianCalendar(year, month - 1, 1);
c.set(Calendar.DATE, c.getActualMinimum(Calendar.DATE));
System.out.printf( "%d年%d月的第一天是: %tF%n ", year, month, c);
c.set(Calendar.DATE, c.getActualMaximum(Calendar.DATE));
System.out.printf( "%d年%d月的最后一天是: %tF%n ", year, month, c);
[解决办法]
可以参考一下我这个日历:
http://user.qzone.qq.com/197428/blog/3
[解决办法]
回家了!
[解决办法]
可以不用自己实现

我第一个想法也是第一天和减一天,觉得很实用~~
[解决办法]
用Calendar类最容易解决这个问题
首先获得2007-8-8的月份,然后获取该月的第一天和最后一天,
用Calendar类不需要你去判断这个月是大月或者小月还是闰年2月
[解决办法]
当前月的第一天好计算,不用说了
最后一天用下个月的第一天减去一天就是了
[解决办法]


Calender

[解决办法]
getActualMaximum
public int getActualMaximum(int field)考虑到给定的时间值和 getFirstDayOfWeek、getMinimalDaysInFirstWeek、getGregorianChange 和 getTimeZone 方法的当前值,返回此日历字段可能具有的最大值。例如,如果此实例的日期是 2004 年 2 月 1 日,则 DAY_OF_MONTH 字段的实际最大值是 29,因为 2004 年是闰年;如果此实例的日期是 2005 年 2 月 1 日,则最大值是 28。
[解决办法]
myydzhz() 的方法是很好,但是其中的last.toLocaleString());方法已经过时了,建议改为如下:package test1;

import java.text.DateFormat;
import java.text.SimpleDateFormat;

public class Test17 {

/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
int year=2007;
int month=2;
DateFormat df=new SimpleDateFormat( "yy-MM-dd ");
java.util.Calendar c=java.util.Calendar.getInstance();
c.set(year,month-1,1);
java.util.Date first=c.getTime();
c.set(year,month,0);
java.util.Date last=c.getTime();
System.out.println(df.format(first));
System.out.println(df.format(last));

}

}

[解决办法]
引用
{
vitamins() ( ) 信誉:100 2007-8-14 10:32:41 得分: 0



LZ可以写一下自己写一下吗?这个不会太难的,不过你要注意想2月,之类的!!!
}

这里面其实有很多人都是刚开始学习的..并不是所谓的 "懒 "!





[解决办法]
lv810() ( ) 信誉:100 2007-8-14 13:57:54 得分: 0


Calendar c = Calendar.getInstance();
c.set(c.YEAR, 2001);
c.set(c.MONTH, 0);
System.out.println(c.getActualMaximum(c.DAY_OF_MONTH)); //一个月的最大天数
System.out.println(c.getActualMinimum(c.DAY_OF_MONTH)); //一个月的最小天数


正解!!
现成的API不要,非要自已写,累!!!





[解决办法]
关注中...
[解决办法]
tricolors()

方法正解,支持采用JDK提供的API
[解决办法]
chenyifei211() 正解
lv810() 考虑到有闰年的情况没有?

热点排行