计算出某年某月某日是星期几

本文提供了一个简单易用的公式来计算特定日期是星期几,并介绍了如何判断一个年份是否为闰年。

如何精确地计算出某年某月某日是星期几,这是一个很让人头疼的事情,下面给出一个公式:

星期计算公式

(年+年/4+年/400-年/100-年基数+月基数+日)/7=……余星期几

注:式中分数均取整

年基数,平年1,闰年2,

月基数,1、平年:一月0, 二月3, 三月3, 四月6, 五月1, 六月4,

七月0, 八月3, 九月5, 十月0, 十一月3, 十二月5.

2、闰年:一月0, 二月3, 三月4, 四月0, 五月2, 六月5,

七月0, 八月3, 九月6, 十月1, 十一月4, 十二月6.

如:1949年10月1日是星期几?

(1949+1949/4+1949/400-1949/100-1+0+1)/7

=(1949+487+4-19-1+0+1)/7

=345……6

即该日为星期六。

仔细观察我们发现,在确定星期数的过程中要判断该年是否为闰年,如下

判断闰年方法

1.能被4整除,且不能被100整除

2.能被100整除,且能被400整除

满足其中一个条件便是闰年

### Java 获取当前日期是星期的方法 在 Java 中,可以通过多种方法获取当前日期是星期。以下是种常见且有效的实现方式: #### 方法一:使用 `SimpleDateFormat` 格式化日期 通过 `SimpleDateFormat` 类可以将当前日期格式化为包含星期信息的字符串。以下是一个示例代码: ```java import java.text.SimpleDateFormat; import java.util.Date; public class WeekExample { public static void main(String[] args) { Date date = new Date(); SimpleDateFormat dateFm = new SimpleDateFormat("EEEE"); String currWeek = dateFm.format(date); System.out.println("今天是:" + currWeek); // 输星期名称 } } ``` 这种方式利用了 `SimpleDateFormat` 的 `EEEE` 模式来表示完整的星期名称[^1]。 #### 方法二:使用 `Calendar` 类 `Calendar` 类提供了对日期和时间字段的操作功能。通过调用 `get(Calendar.DAY_OF_WEEK)` 方法,可以获取当前日期对应的星期(以整数形式返回)。 ```java import java.util.Calendar; public class WeekExample { public static void main(String[] args) { Calendar calendar = Calendar.getInstance(); int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); String[] weekDays = {"", "周日", "周一", "周二", "周三", "周四", "周五", "周六"}; System.out.println("今天是:" + weekDays[dayOfWeek]); } } ``` 这里需要注意的是,`DAY_OF_WEEK` 的返回值从 1 开始,其中 1 表示星期日,2 表示星期一,依此类推[^3]。 #### 方法三:结合 `Date` 和条件判断 如果需要更灵活地处理星期的输内容,可以通过条件语句逐一判断。例如: ```java import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class WeekExample { public static void main(String[] args) { Calendar calendar = Calendar.getInstance(); calendar.setTime(new Date()); int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); String dateStr = new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + " 是"; if (dayOfWeek == Calendar.MONDAY) { dateStr += " 周一"; } else if (dayOfWeek == Calendar.TUESDAY) { dateStr += " 周二"; } else if (dayOfWeek == Calendar.WEDNESDAY) { dateStr += " 周三"; } else if (dayOfWeek == Calendar.THURSDAY) { dateStr += " 周四"; } else if (dayOfWeek == Calendar.FRIDAY) { dateStr += " 周五"; } else if (dayOfWeek == Calendar.SATURDAY) { dateStr += " 周六"; } else if (dayOfWeek == Calendar.SUNDAY) { dateStr += " 周日"; } System.out.println(dateStr); } } ``` 此方法通过枚举所有可能的星期值,并根据条件拼接输结果[^4]。 #### 方法四:使用 `java.time` 包(Java 8 及以上) 从 Java 8 开始,引入了新的日期时间 API,推荐使用 `java.time` 包中的类来处理日期和时间。例如: ```java import java.time.DayOfWeek; import java.time.LocalDate; public class WeekExample { public static void main(String[] args) { LocalDate today = LocalDate.now(); DayOfWeek dayOfWeek = today.getDayOfWeek(); System.out.println("今天是:" + dayOfWeek.getDisplayName(java.time.format.TextStyle.FULL, java.util.Locale.CHINA)); } } ``` 这种方法更加现代化,且避免了传统 `Calendar` 和 `Date` 类的一些问题[^5]。 --- ###
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值