欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-03-12 09:21:44
话不多说,下面来直接看示例代码 具体代码: dayofweek4birthday.java package com.gua; import java...

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

具体代码:

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号是星期几。

结果如下所示:

请输入年份范围和日期,格式:年数 几月 几号(5 9 15),回车结束:5 9 15
输入结果:5个年数,9月15号。
2014年9月15号是星期一。
2015年9月15号是星期二。
2016年9月15号是星期四。
2017年9月15号是星期五。
2018年9月15号是星期六。

process finished with exit code 0

记得用完流要关闭。

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

//输入日期数据。
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能有所帮助,如果有疑问大家可以留言交流。