Java中如何根据日期确定它是属于该年的第几周如2011-1-2属于2011年的第2周。

Java中如何根据日期确定它是属于该年的第几周如2011-1-2属于2011年的第2周。,第1张

这是我原来用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 获取某一月的所有周的日期段(周一到周日)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9715704.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存