利用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能有所帮助,如果有疑问大家可以留言交流。
相关文章
解决BufferedReader.readLine()遇见的坑
这篇文章主要介绍了解决BufferedReader.readLine()遇见的坑,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-12-12
TraceIdPatternLogbackLayout日志拦截源码解析
这篇文章主要为大家介绍了TraceIdPatternLogbackLayout日志拦截源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-11-11
使用jekins自动构建部署java maven项目的方法步骤
这篇文章主要介绍了使用jekins自动构建部署java maven项目的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2021-01-01
Springboot中的@ConditionalOnBean注解详细解读
这篇文章主要介绍了Springboot中的@ConditionalOnBean注解详细解读,@ConditionalOnMissingBean注解两个类,一个Computer类,一个配置类,想要完成;如果容器中没有Computer类,就注入备用电脑Computer类,如果有Computer就不注入,需要的朋友可以参考下2023-11-11
Mybatis-Plus使用@TableField实现自动填充日期的代码示例
数据库中经常有create_time,update_time两个字段,在代码中设置时间有点太麻烦了 mybatis-plus可以帮我们自动填充,本文主要介绍了Mybatis-Plus使用@TableField实现自动填充日期的代码示例,感兴趣的可以了解一下2022-04-04


最新评论