Java根據(jù)日期計(jì)算星期幾的四種方法
更新時(shí)間:2023年09月25日 11:14:00 作者:哭哭啼
在我們?nèi)粘I(yè)務(wù)代碼中,經(jīng)常要用到星期幾,下面這篇文章主要給大家介紹了關(guān)于Java根據(jù)日期計(jì)算星期幾的四種方法,文中通過代碼將每種實(shí)現(xiàn)的非常詳細(xì),需要的朋友可以參考下
方法一:根據(jù)基姆拉爾森日期公式
public static void main(String args[]) {
Scanner scanner = new Scanner(System.in);
// 聲明 int 類型的變量 y 用來獲取控制臺(tái)輸入的年
int y = scanner.nextInt();
// 聲明 int 類型的變量 m 用來獲取控制臺(tái)輸入的月
int m = scanner.nextInt();
// 聲明 int 類型的變量 d 用來獲取控制臺(tái)輸入的日
int d = scanner.nextInt();
/********** Begin **********/
// 第一步,判斷變量 m 的值是否是 1 或者 2。如果是,則變量 m 在原來的基礎(chǔ)上加12,同時(shí)變量 y 在原來的基礎(chǔ)上減1
if (m == 1 || m == 2) {
m += 12;
y--;
}
// 第二步,使用基姆拉爾森日期公式,計(jì)算星期幾
int iWeek = (d + 2 * m + 3 * (m + 1) / 5 + y + y / 4 - y / 100 + y / 400) % 7;
// 第三步,使用多路分支判斷星期幾。如果是星期一,則在控制臺(tái)輸出"星期一";如果是星期二,則在控制臺(tái)輸出"星期二"....以此類推,如果是星期日,就是在控制臺(tái)輸出"星期日"
switch (iWeek) {
case 0:
System.out.print("星期一");
break;
case 1:
System.out.print("星期二");
break;
case 2:
System.out.print("星期三");
break;
case 3:
System.out.print("星期四");
break;
case 4:
System.out.print("星期五");
break;
case 5:
System.out.print("星期六");
break;
case 6:
System.out.print("星期日");
break;
}
/********** End **********/
}方法二:Calendar類
/**
* 日期轉(zhuǎn)星期
*
* @param datetime "2017-01-01"
* @return
*/
public static String dateToWeek(String datetime) {
SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");
String[] weekDays = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
Calendar cal = Calendar.getInstance(); // 獲得一個(gè)日歷
Date datet = null;
try {
datet = f.parse(datetime);
cal.setTime(datet);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int w = cal.get(Calendar.DAY_OF_WEEK) - 1; // 指示一個(gè)星期中的某天。
if (w < 0)
w = 0;
return weekDays[w];
}方法三:GergorianCalendar類
public static void main(String []args)
{
Scanner cin=new Scanner(System.in);
System.out.println("請輸入年,月,日:");
while(cin.hasNext())
{
int year=cin.nextInt();
int month=cin.nextInt();
int day=cin.nextInt();
GregorianCalendar gre=new GregorianCalendar();
Date date=new Date(year-1900,month-1,day); //年要減去1900,月份是0-11
// System.out.println(date);
gre.setTime(date);
int weekday=gre.get(Calendar.DAY_OF_WEEK)-1; //0是星期天
String []s={"星期天","星期一","星期二","星期三","星期四","星期五","星期六",};
System.out.println(year+" "+month+" "+day+" "+s[weekday]);
}方法四:LocalDateTime
public static void main(String[] args) {
getDayOfWeek(2023,9,5);
}
/**
* 輸入年月日,確保輸入日期符合正確年月日,如一個(gè)月不能能輸入40
* @param year 年
* @param month 月
* @param day 日
*/
private static void getDayOfWeek(int year,int month,int day) {
LocalDateTime dateTime= LocalDateTime.now();
// LocalDateTime with = dateTime.withYear(2020).withMonth(7).withDayOfMonth(2);
LocalDateTime with = dateTime.withYear(year).withMonth(month).withDayOfMonth(day);
// LocalDateTime with = dateTime.with(LocalDate.of(year,month,day));
DayOfWeek dayOfWeek = with.getDayOfWeek();
int value = dayOfWeek.getValue();
//獲取周幾,1-7 代表周一到周日
System.out.println(value);
//獲取周幾,英文MONDAY,TUESDAY。。。
System.out.println(dayOfWeek);
}總結(jié)
到此這篇關(guān)于Java根據(jù)日期計(jì)算星期幾的四種方法的文章就介紹到這了,更多相關(guān)Java日期計(jì)算星期幾內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:
相關(guān)文章
基于BigDecimal.setScale的用法小結(jié)
這篇文章主要介紹了基于BigDecimal.setScale的用法小結(jié),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
Java實(shí)現(xiàn)簡單學(xué)生管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡單學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07
基于JWT的spring boot權(quán)限驗(yàn)證技術(shù)實(shí)現(xiàn)教程
這篇文章主要給大家介紹了關(guān)于基于JWT的spring boot權(quán)限驗(yàn)證技術(shù)實(shí)現(xiàn)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11

