这是我原来用C写的,供你参考:
/ 判断某日期是该年的第几周 /
int getWeekSeqByDate(int year, int month, int day)
{
int diff;
int startWeek;
int week;
diff = dateDiff(year,1,1,year,month,day);
startWeek = getWeekByDate(year, 1, 1);
diff += startWeek + 1;
week = diff / 7;
if(diff % 7 != 0)
week++;
return week;
}
/ 返回两个日期相隔的天数 /
int dateDiff(int y1, int m1, int d1, int y2, int m2, int d2)
{
int i;
int days[] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int diff0 = 0, diff1 = 0, diff2 = 0;
/ 计算d1日期到d1所在年份第一天相隔的天数 /
days[1] = isLeapYear(y1)==1 29 : 28;
for(i=1; i<m1; i++)
diff1 += days[i-1];
/ 计算d2日期到d2所在年份第一天相隔的天数 /
days[1] = isLeapYear(y2)==1 29 : 28;
for(i=1; i<m2; i++)
diff2 += days[i-1];
/ 计算d1、d2两个日期的年份相隔的天数 /
if(y1 < y2){
for(i=y1; i<y2; i++){
diff0 += isLeapYear(i)==1 366 : 365;
}
}
else if(y1 > y2){
for(i=y2; i<y1; i++){
diff0 += isLeapYear(i)==1 366 : 365;
}
diff0 = -1;
}
return diff0 + diff2 - diff1 + d2 - d1;
}
/ 判断year是否是闰年,若是返回1,否则返回0 /
int isLeapYear(int year)
{
return ((year%400==0) || (year%4==0 && year%100!=0));
}
/ 返回某月的天数 /
int getDaysOfMonth(int year, int month)
{
if(month<1 || month>12)
return -1;
if(month==1 || month==3 || month==5 || month==7 || month==8
|| month==10 || month==12)
return 31;
else if(month==4 || month==6 || month==9 || month==11)
return 30;
else
if(isLeapYear(year) == 1)
return 29;
else
return 28;
}
import javautilCalendar;
import javautilDate;
import javatextSimpleDateFormat;
import javatextParsePosition;
import javautilGregorianCalendar;
/
<p>Title: </p>
<p>Description: </p>
<p>Copyright: Copyright (c) 2005</p>
<p>Company: </p>
@author not attributable
@version 10
/
public class Untitled1
{
public Untitled1()
{
}
/
判断是否润年
@param ddate
@return
/
public static boolean isLeapYear(String ddate) {
/
详细设计: 1被400整除是闰年,否则: 2不能被4整除则不是闰年 3能被4整除同时不能被100整除则是闰年
3能被4整除同时能被100整除则不是闰年
/
Date d = strToDate(ddate);
GregorianCalendar gc = (GregorianCalendar) CalendargetInstance();
gcsetTime(d);
int year = gcget(CalendarYEAR);
if ((year % 400) == 0)
return true;
else if ((year % 4) == 0) {
if ((year % 100) == 0)
return false;
else
return true;
} else
return false;
}
/
得到一个时间延后或前移几天的时间,nowdate为时间,delay为前移或后延的天数
/
public static String getNextDay(String nowdate, String delay) {
try{
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String mdate = "";
Date d = strToDate(nowdate);
long myTime = (dgetTime() / 1000) + IntegerparseInt(delay) 24 60 60;
dsetTime(myTime 1000);
mdate = formatformat(d);
return mdate;
}catch(Exception e){
return "";
}
}
/
将短时间格式字符串转换为时间 yyyy-MM-dd
@param strDate
@return
/
public static Date strToDate(String strDate) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
ParsePosition pos = new ParsePosition(0);
Date strtodate = formatterparse(strDate, pos);
return strtodate;
}
/
获取一个月的最后一天
@param dat
@return
/
public static String getEndDateOfMonth(String dat) {// yyyy-MM-dd
String str = datsubstring(0, 8);
String month = datsubstring(5, 7);
int mon = IntegerparseInt(month);
if (mon == 1 || mon == 3 || mon == 5 || mon == 7 || mon == 8 || mon == 10 || mon == 12) {
str += "31";
} else if (mon == 4 || mon == 6 || mon == 9 || mon == 11) {
str += "30";
} else {
if (isLeapYear(dat)) {
str += "29";
} else {
str += "28";
}
}
return str;
}
/
根据一个日期,返回是星期几的字符串
@param sdate
@return
/
public static String getWeek(String sdate) {
// 再转换为时间
Date date = strToDate(sdate);
Calendar c = CalendargetInstance();
csetTime(date);
// int hour=cget(CalendarDAY_OF_WEEK);
// hour中存的就是星期几了,其范围 1~7
// 1=星期日 7=星期六,其他类推
return new SimpleDateFormat("EEEE")format(cgetTime());
}
public static String getWeekStr(String sdate){
String str = "";
str = getWeek(sdate);
if("1"equals(str)){
str = "星期日";
}else if("2"equals(str)){
str = "星期一";
}else if("3"equals(str)){
str = "星期二";
}else if("4"equals(str)){
str = "星期三";
}else if("5"equals(str)){
str = "星期四";
}else if("6"equals(str)){
str = "星期五";
}else if("7"equals(str)){
str = "星期六";
}
return str;
}
public static String getNowMonth(String sdate) {
// 取该时间所在月的一号
//sdate = sdatesubstring(0, 8) + "01";
sdate = sdate + "-01";
// 得到这个月的1号是星期几
Calendar c = CalendargetInstance();
Date date = strToDate(sdate);
csetTime(date);
int u = cget(CalendarDAY_OF_WEEK);
String newday = getNextDay(sdate, (1 - u) + "");
return newday;
}
public static String getMonthDate(String sdate) {
// 取该时间所在月的一号
//sdate = sdatesubstring(0, 8) + "01";
sdate = sdate + "-01";
// 得到这个月的1号是星期几
Calendar c = CalendargetInstance();
Date date = strToDate(sdate);
csetTime(date);
int u = cget(CalendarDAY_OF_WEEK);
// for(int i=0;i<)
String edate=getEndDateOfMonth(sdate);
String newday;
newday = getNextDay(sdate, (1 - u) + "");
String week;
int i=0,j=1;
Systemoutprintln();
do
{
newday=getNextDay(sdate,""+i++);
week=getWeek(newday);
if(!weekequals("星期日")&&!weekequals("星期六"))
{
Systemoutprintln("第"+(j)+"周");
Systemoutprint(newday);
Systemoutprint(week);
Systemoutprintln();
}
if(weekequals("星期六"))j++;
}
while(!newdayequals(edate));
return newday;
}
static public void main(String[] args)
{
getMonthDate("2011-05");
}
}
用SimpleDateFormat
import javatextParseException;import javatextSimpleDateFormat;
import javautilDate;
public class Test030 {
public static void main(String[] args){
String s = "2013/9";
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy/MM/dd");
sdf1setLenient(false);
SimpleDateFormat sdf2 = new SimpleDateFormat("EEE");
for(int i = 1; i < 32; i++){
try {
Date date = sdf1parse(s + "/" + i);
Systemoutprintln(sdf1format(date) + " : " + sdf2format(date));
} catch (ParseException e) {
//do nothing
}
}
}
}
输入结果:
2013/09/01 : 星期日
2013/09/02 : 星期一
2013/09/03 : 星期二
2013/09/04 : 星期三
2013/09/05 : 星期四
2013/09/06 : 星期五
2013/09/07 : 星期六
2013/09/08 : 星期日
2013/09/09 : 星期一
2013/09/10 : 星期二
2013/09/11 : 星期三
2013/09/12 : 星期四
2013/09/13 : 星期五
2013/09/14 : 星期六
2013/09/15 : 星期日
2013/09/16 : 星期一
2013/09/17 : 星期二
2013/09/18 : 星期三
2013/09/19 : 星期四
2013/09/20 : 星期五
2013/09/21 : 星期六
2013/09/22 : 星期日
2013/09/23 : 星期一
2013/09/24 : 星期二
2013/09/25 : 星期三
2013/09/26 : 星期四
2013/09/27 : 星期五
2013/09/28 : 星期六
2013/09/29 : 星期日
2013/09/30 : 星期一
以上就是关于Java中如何根据日期确定它是属于该年的第几周如2011-1-2属于2011年的第2周。全部的内容,包括:Java中如何根据日期确定它是属于该年的第几周如2011-1-2属于2011年的第2周。、java 根据输入的年月计算出这个月有几周、java 获取某一月的所有周的日期段(周一到周日)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)