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 ); //进入明天
}
}
}
11-02
11-02
11-02
11-02