笔记19 日历类

package test0911;

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

/*
 * 		1、日历与日期的区别?
 * 			日历是时间的长河,从日历中可以找到过去、现在、找到未来。
 * 
 * 			日期是一个瞬间,是一个时刻。
 * 
 * 		2、日历类: Calendar 抽象的父类, GregorianCalendar子类。 
 * 			1) 这两个类均来自java.util.*;
 * 
 * 			2) 它们用来管理日历.
 * 
 * 		3、掌握GregorianCalendar子类提供的两个常用构造器:
 * 			GregorianCalendar();  它所构造的对象,其日历会定位到与系统时钟一致的日期时间上。
 * 
 * 			GregorianCalendar(year, month, day); 它所构造的对象,其日历会定位到指定的年月日上。
 * 
 * 		4、日历类提供的常用方法:
 * 			get() 用来获取日历中指定字段的值。
 * 			set() 用来将日历定位到指定的日期时间上。
 * 
 * 			add() 时间的增量,将日历中指定的字段增加一个数量。
 * 
 * 			Date getTime()  将日历中当前的日期时间收集起来封装成一个Date类的对象。
 * 
 * 
 * 			注意: 在日历中,用0 --- 11 分别表示1 ---- 12月份。
 * 			注意: 在日历中,用1 ---- 7 分别表示星期日、星期一、星期二、...、星期六
 */
public class CalendarTest {
	public static void main(String[] args) {
		
	
		Calendar  dt = new GregorianCalendar();
		
		int year = dt.get( Calendar.YEAR );
		int month = dt.get( Calendar.MONTH ) + 1;
		int today = dt.get( Calendar.DAY_OF_MONTH );
		int weekday = dt.get( Calendar.DAY_OF_WEEK ) - 1;
		System.out.println( year + "年" + month + "月" + today + "日" + ",它是: 星期" + weekday );
		
		//以上日期再35天是什么日子
		dt.add(Calendar.DAY_OF_MONTH, 35);
		
		System.out.println("\n以上日子再过35天对应的日期如下:");
		year = dt.get( Calendar.YEAR );
		month = dt.get( Calendar.MONTH ) + 1;
		today = dt.get( Calendar.DAY_OF_MONTH );
		System.out.println( year + "年" + month + "月" + today + "日");
		
		//将日历直接定位到指定的年月日上
		dt.set( Calendar.YEAR, 2008 );
		dt.set( Calendar.MONTH, Calendar.AUGUST );
		dt.set( Calendar.DAY_OF_MONTH,  8 );
		
		System.out.println("\n将日历直接定位到2008-8-8上,结果如下:");
		year = dt.get( Calendar.YEAR );
		month = dt.get( Calendar.MONTH ) + 1;
		today = dt.get( Calendar.DAY_OF_MONTH );
		System.out.println( year + "年" + month + "月" + today + "日");
		
		
		Date d1 = new GregorianCalendar(1995, 6, 12).getTime();
		System.out.println( d1 );
		
		
		double x = 13.785291;
		x = 13.000034123;
		x = -13.000034123;
		double y = Math.ceil( x ); //向上取整数(取不小于原数的最小整数)
		System.out.println("\nx = " + x + ",处理后 y = " + y );
		
	//课堂范例  打印当月日历;
			System.out.printf("\n\n今天的日期是:  %tF  %<tA,如下为今日所在月份的日历:\n\n" , new Date());
			
			System.out.println(" 日\t 一\t 二\t 三\t 四\t 五\t 六");
			
			Calendar  dt1 = new GregorianCalendar();
			int month1 = dt1.get( Calendar.MONTH );
			int today1 = dt1.get( Calendar.DAY_OF_MONTH );
			
			//将当前日历的日子定位到1号上
			dt1.set( Calendar.DAY_OF_MONTH , 1 );
			
			//获取1号对应的星期几
			int weekday1 = dt1.get( Calendar.DAY_OF_WEEK );
			
			//打印星期日至weekday之间的空格
			for( int w = Calendar.SUNDAY;  w < weekday1; w++ ){
				System.out.print("        ");
			}
	
			//获取当月的所有日子
			while ( dt1.get(Calendar.MONTH) == month1 ){
				
				int day = dt1.get( Calendar.DAY_OF_MONTH ); //获取日子
				
				if( day == today ){
					System.out.printf("%2d▲\t" ,  day ); //打印
				}else{
					System.out.printf("%2d\t" ,  day ); //打印
				}
				weekday1 = dt1.get( Calendar.DAY_OF_WEEK ); //获取日子对应的星期几
				
				if( weekday1 == Calendar.SATURDAY ){
					System.out.println();//换行
				}
				
				dt1.add( Calendar.DAY_OF_MONTH , 1 ); //进入明天
			}
	
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值