利用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:看看你查詢的具體日子是星期幾,
* 比如,查詢誰誰的“生日對應(yīng)是星期幾”。
*/
public class DayOfWeek4Birthday {
private String[] date; //保存輸入數(shù)據(jù):年數(shù)、幾月、幾號。
//計算輸入的日期數(shù)據(jù)對應(yīng)的星期幾。
private void caculateData() {
GregorianCalendar gc = new GregorianCalendar();
final char[] day_of_week = {'日','一','二','三','四','五','六'};
int year = gc.get(Calendar.YEAR); //從當(dāng)前年算起。
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 + "。");
}
}
//輸入日期數(shù)據(jù)。
private void inputData() {
InputStreamReader is = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(is);
try {
out.print("請輸入年份范圍和日期,格式:年數(shù) 幾月 幾號(5 9 15),回車結(jié)束:");
String in = br.readLine();
date = in.split(" ");
out.println("輸入結(jié)果:" + date[0] + "個年數(shù)," + date[1] + "月" + date[2] + "號。");
}
catch(Exception e) {
out.println("啊哦,運(yùn)行出錯咯-_-。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();
}
}
運(yùn)行,比如想看從今年算起5年內(nèi),每年的9月15號是星期幾。
結(jié)果如下所示:
請輸入年份范圍和日期,格式:年數(shù) 幾月 幾號(5 9 15),回車結(jié)束:5 9 15 輸入結(jié)果:5個年數(shù),9月15號。 2014年9月15號是星期一。 2015年9月15號是星期二。 2016年9月15號是星期四。 2017年9月15號是星期五。 2018年9月15號是星期六。 Process finished with exit code 0
記得用完流要關(guān)閉。
以上是JDK 6的做法,在JDK 7及JDK 8中可以使用automatic resource management(ARM)新特性,重構(gòu)inputData()方法:
//輸入日期數(shù)據(jù)。
private void inputData() {
try(BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
out.print("請輸入年份范圍和日期,格式:年數(shù) 幾月 幾號(5 9 15),回車結(jié)束:");
String in = br.readLine();
date = in.split(" ");
out.println("輸入結(jié)果:" + date[0] + "個年數(shù)," + date[1] + "月" + date[2] + "號。");
}
catch(Exception e) {
out.println("啊哦,運(yùn)行出錯咯-_-。sorry!");
}
}
當(dāng)然,記得要把模塊語言等級相應(yīng)設(shè)置為JDK 7或JDK 8,JDK 6及以下是不會通過的。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家學(xué)習(xí)或者使用Java能有所幫助,如果有疑問大家可以留言交流。
相關(guān)文章
解決BufferedReader.readLine()遇見的坑
這篇文章主要介紹了解決BufferedReader.readLine()遇見的坑,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12
TraceIdPatternLogbackLayout日志攔截源碼解析
這篇文章主要為大家介紹了TraceIdPatternLogbackLayout日志攔截源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11
使用SpringBoot注解方式處理事務(wù)回滾實(shí)現(xiàn)
這篇文章主要介紹了使用SpringBoot注解方式處理事務(wù)回滾實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
使用jekins自動構(gòu)建部署java maven項目的方法步驟
這篇文章主要介紹了使用jekins自動構(gòu)建部署java maven項目的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
Springboot中的@ConditionalOnBean注解詳細(xì)解讀
這篇文章主要介紹了Springboot中的@ConditionalOnBean注解詳細(xì)解讀,@ConditionalOnMissingBean注解兩個類,一個Computer類,一個配置類,想要完成;如果容器中沒有Computer類,就注入備用電腦Computer類,如果有Computer就不注入,需要的朋友可以參考下2023-11-11
Mybatis-Plus使用@TableField實(shí)現(xiàn)自動填充日期的代碼示例
數(shù)據(jù)庫中經(jīng)常有create_time,update_time兩個字段,在代碼中設(shè)置時間有點(diǎn)太麻煩了?mybatis-plus可以幫我們自動填充,本文主要介紹了Mybatis-Plus使用@TableField實(shí)現(xiàn)自動填充日期的代碼示例,感興趣的可以了解一下2022-04-04

