做一个可视化日历

package Dataexercise;

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 test01 {
    public static void main(String[] args) {
        DateFormat format =  new SimpleDateFormat("yyyy-MM-dd");//定义时间的格式
//        String str = "2017-3-12";
        Scanner  scanner = new Scanner(System.in);
        String str =  scanner.nextLine();//输入字符串
        try {
            
        Date  data = format.parse(str); //将字符串转为日期
        Calendar  calendar = new GregorianCalendar();
        calendar.setTime(data);//获得时间
        int day = calendar.get(Calendar.DATE);//获得日期的时间
        calendar.set(Calendar.DATE, 1);
        int month = calendar.get(Calendar.MONTH)+1;//获得月份
        int year = calendar.get(Calendar.YEAR);//获得年数
//        
        System.out.println(year+"年"+ month + "月");//输出时间
        System.out.println();
        int first = calendar.get(Calendar.DAY_OF_WEEK);
//        switch (month){
//        case 1: day =31;break;
//        case 2: day =28;break;
//        case 3: day =31;break;
//        case 4: day =30;break;
//        case 5: day =31;break;
//        case 6: day =30;break;
//        case 7: day =31;break;
//        case 8: day =31;break;
//        case 9:  day =30;break;
//        case 10: day =31;break;
//        case 11: day =30;break;
//        case 12: day =31;break;
//        default:System.out.println("default");
//        }
//        if(year%400==0){
//            day = 29;
//        }
//        else{
//            if(year%4==0&&year%100!=0){
//                day = 29 ;
//            }
//        }
        int maxdate = calendar.getActualMaximum(Calendar.DATE);//本月的最大日期
        
        System.out.println("日\t一\t二\t三\t四\t五\t六\t");
        for(int i=1;i<= maxdate +first-1;i++){
            if((i-first)<0){
                System.out.print(" \t");
            }
            else{
                if(i%7==1){
            
                System.out.println();
                }
                if((i-first+1)==day){
                    System.out.print("*");
                }
            System.out.print((i-first+1)+"\t");
            }
            
        }
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        
    }
    
    
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
程序清单 按以下步骤向视类(CClockView)添加下列数据成员及成员函数。 (1) 添加表示年、月、日、时、分、秒的变量。 int year; int month; int day; int hour; int minute; int second; (2) 添加秒表的计数变量。 int watch; (3) 添加时钟的画笔及画刷变量。 CPen m_HouPen, m_MinPen, m_SecPen; // 各种针的画笔 CBrush m_MarkBrush; // 表盘标记的画刷 (4) 添加时钟控制变量。 CPoint m_Center; // 表的中心 double m_Radius; // 表的半径 CPoint m_Hour [2], m_OldHour [2]; // 时针当前及前一次位置 CPoint m_Minute [2], m_OldMin [2]; // 分针当前及前一次位置 CPoint m_Second [2], m_OldSec [2]; // 秒针当前及前一次位置 (5) 添加秒表的两个按钮位置变量。 CRect m_WatchStart; CRect m_WatchStop; (6) 添加两个函数,计算时钟各指针位置。 void SetClock (int hour, int minute, int second); CPoint GetPoint (int nLenth, int nValue); (7) 在视类构造函数中增加初始化语句: CClockView::~CClockView() { //设定时间 year=2010; month=11; day=22; hour=0; minute=0; second=0; //设定画笔画刷 m_HouPen.CreatePen(PS_SOLID,5,RGB(255,0,0));//时针画笔 m_MinPen.CreatePen(PS_SOLID,3,RGB(0,0,250));//分针画笔 m_SecPen.CreatePen(PS_SOLID,1,RGB(0,0,0));//秒针画笔 m_MarkBrush.CreateSolidBrush(RGB(250,250,0)); //设定表芯位置 m_Center.x=222; m_Center.y=222; //设定时钟半径 m_Radius=222; //计算指针位置 SetClock(hour,minute,second); //设定秒表计数器及按钮位置 watch=0; m_WatchStart=CRect(480,310,560,340);//启动按钮 m_WatchStop=CRect(590,310,670,340);//停止按钮 } 编写指针位置函数SetClock和GETpOINT。 首先在ClockView.cpp文件头部下添加下面两行代码,以便进行数学计算。 #define PI 3.14159265258 #include"math.h" 然后添加下列代码: //计算个指针位置的函数 void CClockView::SetClock(int hour,int minute,int second) { hour=hour*5; hour=hour+minute/12; //保存时针原位置 m_OldHour[0]=m_Hour[0]; m_OldHour[1]=m_Hour[1];

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值