zoukankan      html  css  js  c++  java
  • [java] 可视化日历的实现(基于Calendar类 )

    写在前面

    博文安排顺序如下

    1.写在前面

    2.源码

    3.思路

    4.相关知识

    该小程序是对Date类及其相关类的复习

    要求如下图:实现可视化日历

    实现思路

    1.先从键盘输入指定格式的字符串(str)
    2.将字符串用格式转换类转换成日期( Date date = format.parse(str) )
    3.将日期设置成日历类( calendar.setTime(date) )
    4.获取当月第一天是周几( calendar.get(Calendar.DAY_OF_WEEK) )
    5.获取当月多少天( calendar.getActualMaximum(Calendar.DATE) )
    6.按格式输出

    源码

     1 package TestCalendar;
     2 
     3 import java.util.Date;
     4 import java.text.DateFormat;
     5 import java.text.ParseException;
     6 import java.text.SimpleDateFormat;
     7 import java.util.Calendar;
     8 import java.util.GregorianCalendar;
     9 
    10 
    11 public class visonCalendar {
    12     public static void main(String args[]){
    13 
    14         String temp = "2014-11-11";
    15         Calendar calendar = new GregorianCalendar();
    16         DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    17         
    18         try {
    19             Date date = df.parse(temp);
    20             calendar.setTime(date);
    21             int day = calendar.get(Calendar.DATE);
    22             calendar.set(Calendar.DAY_OF_MONTH, 1);
    23             int FirstDay = calendar.get(Calendar.DAY_OF_WEEK);
    24             int maxDate   = calendar.getActualMaximum(Calendar.DATE);
    25             System.out.println(FirstDay);
    26             
    27             System.out.println("日	一	二	三	四	五	六");
    28             for(int i = 1; i <= maxDate; i++ ){
    29                 if (i == day){
    30                     System.out.print("*");
    31                 }
    32                 while((FirstDay-1)>0){   //按照需要打印的格式,本月1号从第FirstDay天开始,所以前面需要(FirstDay-1)个" 	"  
    33                     System.out.print(" 	");
    34                     FirstDay--;
    35                 }
    36             
    37             System.out.print(i+"	");
    38             int w = calendar.get(Calendar.DAY_OF_WEEK);
    39             if(w == Calendar.SATURDAY){  //每到周六换行
    40                 System.out.print("
    ");
    41             }
    42             calendar.add(Calendar.DATE, 1);  //从1号开始打印,每次打印完日期加1,否则换行if判断无效
    43                 
    44         }
    45             } catch (ParseException e) {
    46             e.printStackTrace();
    47         }
    48             
    49     }
    50 
    51 }

    相关知识

    Calendar 的 month 从 0 开始,也就是全年 12 个月由 0 ~ 11 进行表示。

    Calendar.DAY_OF_WEEK 定义和值如下:

    Calendar.SUNDAY = 1
    Calendar.MONDAY = 2
    Calendar.TUESDAY = 3
    Calendar.WEDNESDAY = 4
    Calendar.THURSDAY = 5
    Calendar.FRIDAY = 6
    Calendar.SATURDAY = 7

    SimpleDateFormat 的格式定义

    LetterDate or Time ComponentPresentationExamples
    G Era designator Text AD
    y Year Year 199696
    Y Week year Year 200909
    M Month in year (context sensitive) Month JulyJul07
    L Month in year (standalone form) Month JulyJul07
    w Week in year Number 27
    W Week in month Number 2
    D Day in year Number 189
    d Day in month Number 10
    F Day of week in month Number 2
    E Day name in week Text TuesdayTue
    u Day number of week (1 = Monday, ..., 7 = Sunday) Number 1
    a Am/pm marker Text PM
    H Hour in day (0-23) Number 0
    k Hour in day (1-24) Number 24
    K Hour in am/pm (0-11) Number 0
    h Hour in am/pm (1-12) Number 12
    m Minute in hour Number 30
    s Second in minute Number 55
    S Millisecond Number 978
    z Time zone General time zone Pacific Standard TimePSTGMT-08:00
    Z Time zone RFC 822 time zone -0800
    X Time zone ISO 8601 time zone -08-0800-08:00

  • 相关阅读:
    php token的生成
    php使用gearman进行任务分发
    PHP调用Python接口过程中所遇到的问题
    php结合redis实现高并发下的抢购、秒杀功能
    (转)防止表单重复提交的八种简单有效的策略
    yii防止延迟用户多次点击按钮重复提交数据
    mysql 几种日志
    神经网络模型模型转ONNX
    ResNet v2笔记
    ResNet论文笔记
  • 原文地址:https://www.cnblogs.com/printN/p/6058610.html
Copyright © 2011-2022 走看看