JavaSE8运用LocalDate写本月日历

本文介绍如何使用Java 8的时间日期API进行日期操作,包括获取当前日期、设置日期、获取星期几以及打印一个月的日历。通过实例代码展示了如何构造日历对象,获取月份、日期,设置日期为月初,并打印出格式化的月历。

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

效果如下:
打印结果
Java代码如下:

package com.examples.date;

import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.Month;

public class MyCalendar {
	//我要写一个日历程序
	public static void main(String[] args) {
		LocalDate date=LocalDate.now();//构造了一个日历对象,并用当前的日期和时间进行初始化 2018-10-03
		//下面获取当前的月和日
		int month=date.getMonthValue();//10
		int today=date.getDayOfMonth();//3
		//然后将date设置为这个月的第一天,并得到这一天为星期几
		date=date.minusDays(today-1);//minus:减号 (Java SE 8新增) 
		//minusDays(num):在date的天数上减去num
		//也就是 2018-10-3 减去 2天 即可得到这个月的第一天
		DayOfWeek weekday=date.getDayOfWeek();//Wed
		int value=weekday.getValue();//1=MONDAY,...7=SUNDAY 
		//注意日历的第一行是缩进的,使得月份的第一天指向相应的星期几。
		
		Month month2 = date.getMonth();
		System.out.println("\t"+month2 );//打印本月份:OCTOBER
		System.out.println("Mon Tue Wed Thu Fri Sat Sun");
		//下面的代码会打印表头的第一行的缩进:
		for(int i=0;i<value;i++) {
			System.out.println(" ");
		}
		//打印日历的主体。进入一个循环,其中date遍历一个月中的每一天
		//每次迭代时,打印日期值。如果date是当前日期,这个日期则用一个*标记。
		//接下来,把date推进到下一天。如果到达新的一周的第一天,则换行打印:
		while(date.getMonthValue()==month) {//打印本月的日历
			//"%"表示进行格式化输出,"%"之后的内容为格式的定义,"d"表示输出十进制整数,"3"表示输出的长度 
			//为什么是3而不是2? 为了和Mon Tue Wed Thu Fri Sat Sun对齐
			System.out.printf("%3d",date.getDayOfMonth());
			if(date.getDayOfMonth()==today)
				System.out.print("*");
			else
				System.out.print(" ");
			date=date.plusDays(1);
			//如果是星期一的话,就换行
			if(date.getDayOfWeek().getValue()==1)
				System.out.println();
		}
	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值