java可视化日历_Java简单可视化日历程序

涉及知识:

一、Date类

在JDK1.0中,Date类是唯一的一个代表时间的类,但是由于Date类不便于实现国际化,所以从JDK1.1版本开始,推荐使用Calendar类进行时间和日期处理。这里简单介绍一下Date类的使用。

1、使用Date类代表当前系统时间

Date d = new Date();

System.out.println(d);

使用Date类的默认构造方法创建出的对象就代表当前时间,由于Date类覆盖了toString方法,所以可以直接输出Date类型的对象,显示的结果如下:

Tue Aug 08 16:20:20 CST 2017

2、使用Date类代表指定的时间(过期)

Date d1 = new Date(2017-1900,8-1,8);

System.out.println(d1);

使用带参数的构造方法,可以构造指定日期的Date类对象,Date类中年份的参数应该是实际需要代表的年份减去1900,实际需要代表的月份减去1以后的值,显示的结果如下:

Tue Aug 08 00:00:00 CST 2017

3、获得Date对象中的信息(过期)

Date d2 = new Date();

int year = d2.getYear() +

1900; //年份

int month = d2.getMonth() +1;//月份

int day = d2.getDay();//星期几

System.out.println("年份:" + year);

System.out.println("月份:" + month);

System.out.println("星期:" + day);

二、Calendar类

从JDK1.1版本开始,在处理日期和时间时,系统推荐使用Calendar类进行实现。在设计上,Calendar类的功能要比Date类强大很多,而且在实现方式上也比Date类要复杂一些,下面就介绍一下Calendar类的使用。

1、使用Calendar类代表当前时间

Calendar c = Calendar.getInstance();

由于Calendar类是抽象类,且Calendar类的构造方法是protected的,所以无法使用Calendar类的构造方法来创建对象,API中提供了getInstance方法用来创建对象。

2、使用Calendar类代表指定的时间

Calendar c1 = Calendar.getInstance();

c1.set(2017, 8 - 1, 8);

使用Calendar类代表特定的时间,需要首先创建一个Calendar的对象,然后再设定该对象中的年月日参数来完成。

set方法的声明为:

public final void set(int year,int month,int

date)

在该方法中,参数field代表要设置的字段的类型,常见类型如下:

Calendar.YEAR——年份

Calendar.MONTH——月份

Calendar.DATE——日期

Calendar.DAY_OF_MONTH——日期,和上面的字段完全相同

Calendar.HOUR——12小时制的小时数

Calendar.HOUR_OF_DAY——24小时制的小时数

Calendar.MINUTE——分钟

Calendar.SECOND——秒

Calendar.DAY_OF_WEEK——星期几

后续的参数value代表,设置成的值。例如:

c1.set(Calendar.DATE,8);

该代码的作用是将c1对象代表的时间中日期设置为8号,其它所有的数值会被重新计算,例如星期几以及对应的相对时间数值等。

3、获得Calendar类中的信息

Calendar c2 = Calendar.getInstance(); //年份

int year = c2.get(Calendar.YEAR); //月份

int month = c2.get(Calendar.MONTH) + 1; //星期几

int day = c2.get(Calendar.DAY_OF_WEEK);

System.out.println("年份:" + year);

System.out.println("月份:" + month);

System.out.println("星期:" + day);

使用Calendar类中的get方法可以获得Calendar对象中对应的信息,get方法的声明如下:

public int get(int field)

其中参数field代表需要获得的字段的值,字段说明和上面的set方法保持一致。需要说明的是,获得的月份为实际的月份值减1,获得的星期的值和Date类不一样。在Calendar类中,周日是1,周一是2,周二是3,依次类推。

代码演示(可视化日历程序):

import java.text.DateFormat;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

import java.util.GregorianCalendar;

import java.util.Scanner;

public class TestDemo{

public static void main(String[] args) {

System.out.println("请按格式输入日期(如2017-8-8):");

Scanner input = new Scanner(System.in);//输入

String str = input.nextLine();

DateFormat df = new

SimpleDateFormat("yyyy-MM-dd");//字符串格式化

try {

Date date = df.parse(str);//尝试把字符串

str解释为日期和时间的表示形式

Calendar calendar = new

GregorianCalendar();//使用当前时间构造一个默认的 GregorianCalendar

calendar.setTime(date);//使用给定的 Date 设置此 Calendar

的时间。

calendar.set(Calendar.DATE, 1);//将日期设为1号

int maxDate =

calendar.getActualMaximum(calendar.DATE);//返回指定日历字段可能拥有的最大值

System.out.print("日\t一\t二\t三\t四\t五\t六");

System.out.println();

for(int i = 1 ; i <

calendar.get(Calendar.DAY_OF_WEEK); i++){//循环,次数少于当前星期中的某天

System.out.print("\t");

}

for(int i = 1; i <= maxDate; i++){

//循环,次数少于日历字段可能拥有的最大值

System.out.print(i+"\t");

int week =

calendar.get(Calendar.DAY_OF_WEEK);//指示一个星期中的某天

if(week == 7){//如果当前星期等于周六

System.out.println();

}

calendar.add(Calendar.DATE, 1);//当前日期追加1

}

} catch (ParseException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值