您的位置:首页 > 编程语言 > Java开发

用JAVA(Myeclipse)实现可视化日历

2016-03-12 19:16 633 查看
日历的实现,主要用了Calender类获取信息,DateFormat,SimpleDateFormat类进行日期的格式调整,Scanner类控制输入,用两个“for”语句来实现核心的日历输出,第一个用来输出空白,第二个用来输出日期。在学习c语言的时候,打印输出一些图案,还有九九乘法表,也是用for语句循环,有时还进行for语句嵌套。

实现过程是,用户输入一个格式固定的日期,如1902-02-02,然后就会出现本月的日历,且输入的日期会特别标记,后期学习了spring等技术后,就可以把日历做的更加美观了。

实现效果:



有几点需要特别说明一下

1.
String str=s.nextLine();


直接获取了用户输入到控制台的一行内容,返回一个String类型

2.
DateFormat format=new SimpleDateFormat("yyyy-MM-dd");


这里运用了多态,父类引用指向子类对象,并且固定了日期的格式,这个格式是固定的,有多种固定格式,

“yyyy-MM-dd”只是其中一种,不可以随便乱改。

3.将String类型的文本转化为Date类型日期

String str="1902-03-02";
DateFormat format=new SimpleDateFormat("yyyy-MM-dd");
Date date=format.parse(str);


4.将Date类型转换为String

Date date=new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str=sdf.format(d);


5.Calendar类

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

int today=calendar.get(Calendar.DATE);
//方便以后进行比较,做出特别标记

public static final int DATE: get 和 set 的字段数字,指示一个月中的某天,一个月中第一天的值为 1

public int get(int field):返回给定日历字段的值

calendar.set(Calendar.DATE, 1);
//将DATE设置为1,即一个月中的第一天

public void set(int field,int value):将给定的日历字段设置为给定值

int mon=calendar.get(Calendar.DAY_OF_WEEK);


public static final int DAY_OF_WEEK: get 和 set 的字段数字,指示一个星期中的某天。该字段可取的值为

SUNDAY(1)、MONDAY(2)、TUESDAY(3)以此类推,所以如果它返回5,实际是周四

int days=calendar.getActualMaximum(Calendar.DATE);


public int getActualMaximum(int field): 返回指定日历字段可能拥有的最大值,也就是一个月有几天

calendar.add(Calendar.DATE, 1);


public abstract void add(int field,int amount): 根据日历的规则,为给定的日历字段添加或减去指定的时间量

实现代码:

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;

/**
* 可视化日历程序
* @author wwyDEPP
*
*/
public class VisualCalender {
public static void main(String[] args) {
System.out.println("请输入要查询的日期,如2001-01-10");
Scanner s=new Scanner(System.in);
String str=s.nextLine();
DateFormat format=new SimpleDateFormat("yyyy-MM-dd");
try {
Date date=format.parse(str);
Calendar calendar=new GregorianCalendar();
calendar.setTime(date);

int today=calendar.get(Calendar.DATE);
calendar.set(Calendar.DATE, 1);
//输入日期的一号是周几,周日-1,周一-2,周三-4
int mon=calendar.get(Calendar.DAY_OF_WEEK);
//输入日期的月份有几天
int days=calendar.getActualMaximum(Calendar.DATE);

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

//打印空格
for(int i=1;i<mon;i++){
System.out.print('\t');
}

//打印数字
for(int i=1;i<=days;i++){
if(i==today){
System.out.print("["+i+"]\t");
}else{
System.out.print(i+"\t");
}

//到星期六换行
int w=calendar.get(Calendar.DAY_OF_WEEK);
if(w==Calendar.SATURDAY){
System.out.println();
}
//日期加一
calendar.add(Calendar.DATE, 1);
}
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: