java计算某月份天数和星期
需求:
显示当前月的日历,如何计算某月份的天数以及一个给定日期相应的是星期几。
思路:
1.构造一个日历对象,并用当前的日期和时间初始化。
2.将date设置为这个月的第一天,并得到这一天是星期几。
3.变量weekday设置为DayOfWeek类型的对象。
4.打印表头和第一行缩进 。
5.打印日历主体。
package com.ji;
import java.time.DayOfWeek;
import java.time.LocalDate;
/**
* 需求:显示当前月的日历,如何计算某月份的天数以及一个给定日期相应的是星期几。
* 思路:1.构造一个日历对象,并用当前的日期和时间初始化。
* 2.将date设置为这个月的第一天,并得到这一天是星期几。
* 3.变量weekday设置为DayOfWeek类型的对象。
* 4.打印表头和第一行缩进
* 5.打印日历主体
* @author eleven
*
*/
public class ClendarTest {
public static void main(String[] args) {
// 1.构造日历对象
LocalDate date = LocalDate.now(); // now表示当前日期
// 2.对当前日期和时间初始化
int month = date.getMonthValue(); // 月
int today = date.getDayOfMonth(); // 日
// 3.将date设置为这个月的第一天。
date = date.minusDays(today - 1);// minusDay表示生成当前日期之前n天的日期
// 4.并得到这一天是星期几。
DayOfWeek weekday = date.getDayOfWeek(); // 将weekday设置为DayOfWeek类型的对象
int value = weekday.getValue(); // 调用weekday里面的getValue方法来得到星期几的一个数值
// 5.打印表头和第一行缩进。
System.out.println("一 二 三 四 五 六 七"); // 表头
for (int i = 1; i < value; i++)
System.out.print(" "); // 第一行缩进
// 6.打印日历的主体
while(date.getMonthValue() == month) { // 如果是当前月
System.out.printf("%3d",date.getDayOfMonth());
if(date.getDayOfMonth() == today) // 如果是当前日
System.out.print("*"); // 如果是当前日期,就用一个*号标记
else
System.out.print(" ");
// 如果达到新的一周的第一天
date = date.plusDays(1); // plusDay表示生成当前日期之后n天的日期
if(date.getDayOfWeek().getValue() == 1) System.out.println();
}
if(date.getDayOfWeek().getValue() != 1) System.out.println();
}
}
控制台效果:
有一点小问题,有大神的话,还希望可以指出来鸭。