利用Java计算某个日期是星期几

时间:2021-08-10 10:19:37

话不多说,下面来直接看示例代码

具体代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
DayOfWeek4Birthday.java
 
package com.gua;
 
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.io.*;
import static java.lang.System.out;
 
/**
 * Created by 2gua on 2014/9/27.
 * DayOfWeek4Birthday:看看你查询的具体日子是星期几,
 *           比如,查询谁谁的“生日对应是星期几”。
 */
 
public class DayOfWeek4Birthday {
  private String[] date; //保存输入数据:年数、几月、几号。
 
  //计算输入的日期数据对应的星期几。
  private void caculateData() {
    GregorianCalendar gc = new GregorianCalendar();
    final char[] day_of_week = {'日','一','二','三','四','五','六'};
    int year = gc.get(Calendar.YEAR); //从当前年算起。
    char week;
 
    for(int i = year; i<= year + Integer.valueOf(date[0]) - 1; i++) {
      gc.set(i, Integer.valueOf(date[1]) - 1, Integer.valueOf(date[2]));
 
      week = day_of_week[gc.get(Calendar.DAY_OF_WEEK) - 1];
 
      out.println(i + "年" + date[1] + "月" + date[2] + "号是星期" + week + "。");
    }
  }
 
  //输入日期数据。
  private void inputData() {
    InputStreamReader is = new InputStreamReader(System.in);
    BufferedReader br = new BufferedReader(is);
 
    try {
      out.print("请输入年份范围和日期,格式:年数 几月 几号(5 9 15),回车结束:");
      String in = br.readLine();
      date   = in.split(" ");
      out.println("输入结果:" + date[0] + "个年数," + date[1] + "月" + date[2] + "号。");
    }
    catch(Exception e) {
      out.println("啊哦,运行出错咯-_-。sorry!");
    } finally {
      try {
        br.close();
        is.close();
      } catch (IOException e) {
        out.println("IO出错咯-_-。sorry!");
      }
    }
  }
 
  public static void main(String[] args) {
    DayOfWeek4Birthday dayOfWeek4Birthday = new DayOfWeek4Birthday();
 
    dayOfWeek4Birthday.inputData();
    dayOfWeek4Birthday.caculateData();
  }
}

运行,比如想看从今年算起5年内,每年的9月15号是星期几。

结果如下所示:

?
1
2
3
4
5
6
7
8
9
请输入年份范围和日期,格式:年数 几月 几号(5 9 15),回车结束:5 9 15
输入结果:5个年数,915号。
2014915号是星期一。
2015915号是星期二。
2016915号是星期四。
2017915号是星期五。
2018915号是星期六。
 
Process finished with exit code 0

记得用完流要关闭。

以上是JDK 6的做法,在JDK 7及JDK 8中可以使用automatic resource management(ARM)新特性,重构inputData()方法:

?
1
2
3
4
5
6
7
8
9
10
11
12
//输入日期数据。
private void inputData() {
  try(BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
    out.print("请输入年份范围和日期,格式:年数 几月 几号(5 9 15),回车结束:");
    String in = br.readLine();
    date   = in.split(" ");
    out.println("输入结果:" + date[0] + "个年数," + date[1] + "月" + date[2] + "号。");
  }
  catch(Exception e) {
    out.println("啊哦,运行出错咯-_-。sorry!");
  }
}

当然,记得要把模块语言等级相应设置为JDK 7或JDK 8,JDK 6及以下是不会通过的。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家学习或者使用Java能有所帮助,如果有疑问大家可以留言交流。