根据某年某月某日获得这一天是星期几之Java篇

本文介绍了一个实用的Java工具类,该工具类可以根据输入的日期字符串(格式为YYYY-MM-DD),返回该日期对应的星期名称。文章提供的代码示例展示了如何使用简单的算法计算日期对应的星期,并提供了完整的类实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


package com.xcl.common.util;

public class DateUtil {

/**
* 根据 年月日,获得这一天是星期几
*
* 如: 根据2010-07-20 ,得到这天是星期二
*/
public static String getWeekByYMD(String dateStr, String regix)
throws Exception {
String[] arr = dateStr.split(regix);

int uYear = Integer.parseInt(arr[0], 10);
int uMonth = Integer.parseInt(arr[1], 10);
int uDay = Integer.parseInt(arr[2], 10);
int a = (14 - uMonth) / 12;
int y = uYear - a;
int m = uMonth + 12 * a - 2;
int d = (uDay + y + y / 4 - y / 100 + y / 400 + 31 * m / 12) % 7;
String[] week = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
return week[d];
}
}




public static void main(String[] args) {
String dateStr = "2010-07-20";
System.out.println(getWeekByYMD(dateStr, "-"));
}
要使用Java来判断某年某月某日是一年中的第天,可以编写一个方法来计算。以下是一个简单的实现方法: 1. 首先,确定每个月的天数,考虑到闰年的情况,二月可能有28天或29天。 2. 接着,累加前个月的天数以及输入日期所在月的天数,得到输入日期是一年中的第天。 下面是一个具体的代码实现: ```java import java.util.Scanner; public class DayOfYear { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("请输入年份:"); int year = scanner.nextInt(); System.out.println("请输入月份:"); int month = scanner.nextInt(); System.out.println("请输入日期:"); int day = scanner.nextInt(); int dayOfYear = findDayOfYear(year, month, day); System.out.println("这是该年的第 " + dayOfYear + " 天。"); } public static int findDayOfYear(int year, int month, int day) { // 每个月的天数,注意2月是变量,平年28天,闰年29天 int[] daysOfMonth = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // 判断是否为闰年 boolean isLeapYear = (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); if (isLeapYear) { daysOfMonth[1] = 29; // 如果是闰年,2月为29天 } // 累加前个月的天数 int dayOfYear = 0; for (int i = 0; i < month - 1; i++) { dayOfYear += daysOfMonth[i]; } // 加上当前月的天数 dayOfYear += day; return dayOfYear; } } ``` 这段代码首先定义了一个`findDayOfYear`方法,该方法接受年、月、日三个参数,计算并返回这一天是该年的第天。然后在`main`方法中,程序提示用户输入年、月、日,调用`findDayOfYear`方法计算结果,并打印输出。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值