java 给一个日期判断是星期几

java 给一个日期判断是星期几,第1张

    /

      判断当前日期是星期几<br>

      <br>

      @param pTime 修要判断的时间<br>

      @return dayForWeek 判断结果<br>

      @Exception 发生异常<br>

     /

 public static int dayForWeek(String pTime) throws Exception {

  SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");

  Calendar c = CalendargetInstance();

  csetTime(formatparse(pTime));

  int dayForWeek = 0;

  if(cget(CalendarDAY_OF_WEEK) == 1){

   dayForWeek = 7;

  }else{

   dayForWeek = cget(CalendarDAY_OF_WEEK) - 1;

  }

  return dayForWeek;

 }

写完了,测试没有问题。程序中有注释。可以看看,不懂的可以给我消息。

import javaxswingJOptionPane;

public class DateTest {

/

@param args

/

//上面是非闰年的,下面是闰年的每个月的天数

static int M[]={31,28,31,30,31,30,31,31,30,31,30,31};

static int M1[]={31,29,31,30,31,30,31,31,30,31,30,31};

static int year = 0;

static int month = 0;

static int day = 0;

static int sum_day = 0;

public static void main(String[] args) {

// TODO Auto-generated method stub

String date=JOptionPaneshowInputDialog(null,"请输入日期YYYY-MM-DD:","是星期几?",JOptionPanePLAIN_MESSAGE);

//2007-01-01是星期一,选择2007就是因为他的第一天是星期一。

//先计算输入的日期和2007年1月1日的差距天数

//将输入的信息的年月日信息提取出来

String arr[] = datesplit("-");

year = IntegerparseInt(arr[0]);

month = IntegerparseInt(arr[1]);

day = IntegerparseInt(arr[2]);

//如果是2007年之后的

if(year>2007)

{

int i;

for(i=2007;i<year;i++)

{

if(check(i))

sum_day += 366;

else sum_day += 365;

}

comCurYear(year,0);

}

else if(year==2007)

{

comCurYear(year,0);

}

else//2007年之前的

{

int i;

for(i=2006;i>year;i--)

{

if(check(i))

sum_day += 366;

else sum_day += 365;

}

comCurYear(year,1);

}

//由于只有7个我就全部输出来了。没有用数组来判断。

int temp = sum_day%7;

if(temp==1)

JOptionPaneshowMessageDialog(null,year+"年"+month+"月"+day+"日是星期一");

if(temp==2)

JOptionPaneshowMessageDialog(null,year+"年"+month+"月"+day+"日是星期二");

if(temp==3)

JOptionPaneshowMessageDialog(null,year+"年"+month+"月"+day+"日是星期三");

if(temp==4)

JOptionPaneshowMessageDialog(null,year+"年"+month+"月"+day+"日是星期四");

if(temp==5)

JOptionPaneshowMessageDialog(null,year+"年"+month+"月"+day+"日是星期五");

if(temp==6)

JOptionPaneshowMessageDialog(null,year+"年"+month+"月"+day+"日是星期六");

if(temp==0)

JOptionPaneshowMessageDialog(null,year+"年"+month+"月"+day+"日是星期日");

}

//检验一年是不是闰年

public static boolean check(int Y)

{

if(Y%400==0) return true;

else if(Y%4==0&&Y%100!=0) return true;

else return false;

}

public static void comCurYear(int Y,int flag)

{

int year_flag=0;

if(check(Y)) year_flag=1;

int k;

if(flag==0)//year>=2007

{

for(k=1;k<=12;k++)

{

if(k<month)

{

if(year_flag==1) //闰年

{

sum_day += M1[k-1];

}

else sum_day += M[k-1];

}

else if(k==month) sum_day += day;

else if(k>month) break;

}

}

if(flag==1)//year<2007

{

for(k=12;k>=1;k--)

{

if(k>month)

{

if(year_flag==1) //闰年

{

sum_day += M1[k-1];

}

else sum_day += M[k-1];

}

else if(k==month) //闰年

{

if(year_flag==1)

{

sum_day += M1[k-1]-day;

}

else sum_day += M[k-1]-day;

}

else if(k<month) break;

}

//下面两句话是对2007之前的年做一个处理,比如相差5天,其实是应该不是星期5而是星期2

int temp = sum_day%7;

sum_day = sum_day-temp + 7-temp;

}

return ;

}

}

import javasqlDate;

public class TestWeek {

public static void main(String[] args) {

//2007-1-1 刚好是星期一,就从这天开始算

Date d = DatevalueOf("2007-1-1");

Date dd = DatevalueOf("2007-1-2");

final long oneDayTime = ddgetTime() - dgetTime(); //得到一天的long值

final long weekTime = oneDayTime 7; // 一周的long值

int start = 2007; //起始年2007

int end = 10; //要计算的年数,这里可以增加,当前计算今后10年

for (int i = 1; i <= end; i++) {

int currYear = start + i; //当前要计算的年

String tt = currYear + "-1-1";//tt:当前要计算的年的元旦日期

Date cuttIime = DatevalueOf(tt);

long count = cuttIimegetTime() - dgetTime(); //得到余下时间的long值,距离2007-1-1

long many = count % weekTime; //余下时间的天数的long值

int w = (int) (many / oneDayTime);//余下的天数

print(currYear,w);//打印日期

}

}

public static void print(int y,int i) {

String week = null;

switch (i) {

case 1:

week = "二"; break;

case 2:

week = "三";break;

case 3:

week = "四";break;

case 4:

week = "五";break;

case 5:

week = "六";break;

case 6:

week = "日";break;

case 0:

week = "一";break;

};

Systemoutprintln(y +" 年的元旦是星期" + week);

}

}

结果:未来30年:

2008 年的元旦是星期二

2009 年的元旦是星期四

2010 年的元旦是星期五

2011 年的元旦是星期六

2012 年的元旦是星期日

2013 年的元旦是星期二

2014 年的元旦是星期三

2015 年的元旦是星期四

2016 年的元旦是星期五

2017 年的元旦是星期日

2018 年的元旦是星期一

2019 年的元旦是星期二

2020 年的元旦是星期三

2021 年的元旦是星期五

2022 年的元旦是星期六

2023 年的元旦是星期日

2024 年的元旦是星期一

2025 年的元旦是星期三

2026 年的元旦是星期四

2027 年的元旦是星期五

2028 年的元旦是星期六

2029 年的元旦是星期一

2030 年的元旦是星期二

2031 年的元旦是星期三

2032 年的元旦是星期四

2033 年的元旦是星期六

2034 年的元旦是星期日

2035 年的元旦是星期一

2036 年的元旦是星期二

2037 年的元旦是星期四

以上就是关于java 给一个日期判断是星期几全部的内容,包括:java 给一个日期判断是星期几、java 语言 输入一个日期 显示出星期几、帮编写 java 获取星期几等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址:https://54852.com/web/9691973.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存