文档章节

可视化日历【Java,有详细的注释】

杨润康Bla
 杨润康Bla
发布于 2016/05/18 18:04
字数 462
阅读 22
收藏 0
package cn.bla.test;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner;
/** * VisualCalender ===可视化日历=== * @author 杨润康 * @category java * @since 2015-5-31 * @version 1 */
public class VisualCalender {
    public static void main(String[] args) throws Exception {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入日期:<格式:2015-5-5>");
        String time=input.next();//用户输入的字符串
        //具体的处理判断
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Date date = dateFormat.parse(time);//将字符串解析成日期类型

        //日历类上场
        Calendar calendar = new GregorianCalendar();
        calendar.setTime(date);//将日期放进日历里面去,然后对日历进行操作,实际上就是对日期进行操作
        //因为日历都是从一开始的,所以先将用户输入的日期的日部分变为1
        calendar.set(Calendar.DATE, 1);
        //得到当前月份的一号,是在一周之内的周几 (得到的数要-1 ,因为老外的是从周日开始一周的生活的,所以比我们早了一天)
        int actualDayInAWeek=calendar.get(Calendar.DAY_OF_WEEK)-1;
        //得到当前月份有多少天DATE || DAY_OF_MONTH
        int actualDaysInMonth=calendar.getMaximum(Calendar.DAY_OF_MONTH);
        //现在处理在具体的某一号的后面做个标记
            //先前为了处理月份的一号是在一周的星期几时,曾把它设为1,现在把它恢复过来,为下面的标记做准备
            String getOldDate=dateFormat.format(date);
            Date oldDate = dateFormat.parse(getOldDate);
            calendar.setTime(oldDate);
            //取月份中的具体的某一号
            int day=calendar.get(Calendar.DATE);
        //程序的可视化部分
        System.out.println("\t\t===可视化日历===");
        System.out.println("日\t一\t二\t三\t四\t五\t六");
        for(int i=1;i<=actualDaysInMonth;i++){
            //让1号在具体的周几的位置,然后在这个位置之前是不打印任何字符的,只打印空格
            if(i<=actualDayInAWeek){
                System.out.print("\t");
                continue;
            }
            if((i-actualDayInAWeek)==day){//在具体的某一号的后面做#个标记
                System.out.print((i-actualDayInAWeek)+"#\t");
                continue;
            }
            System.out.print((i-actualDayInAWeek)+"\t");//(i-actualDayInAWeek)在周X的位置,是从一开始打印的

            if(i%7==0){
                System.out.println();
            }
        }
    }
}

本文转载自:http://blog.csdn.net/yangrunkangbla/article/details/46290851

共有 人打赏支持
杨润康Bla
粉丝 14
博文 76
码字总数 0
作品 0
合肥
后端工程师
JComponentPack3.0正式发布

奇新Java控件---Java控件提供商和Java RIA, Web, J2ME解决方案开发商 我们为您提供了一系列方便易用的Java控件,帮助开发人员提高工作效率,加快开发进程。 最新动态: JComponentPack3.0正式...

fralepg
2009/04/11
0
0
Eclipse Code Template 设置

打开Code Template 设置 从菜单栏依次打开 Window --> Preferences --> Java --> Code Style --> Code Templates Comments代表注释模板,Code代表代码模板,其中每一个子菜单代表子项的模板。......

admin_qing
07/03
0
0
关于fullcalendar里显示json格式的events(java)

cyper的java代碼(spring mvc controller): @RequestMapping(value = "calendarEvents")@ResponseBodypublic String calendarEvents(){List<LecturerAgendaVo> agendas = lecturerAgendaServ......

cyper
2013/10/08
0
2
java8中的时间处理0 - api介绍

Java 8 Date Time API是我们java开发一直寻找的时间处理工具。java从一开始设计的时间类就让人头疼,好在现在终于有了java8。 为什么我们需要这套API 只要是有这么几个理由: Java的日期和时...

davelet
02/22
0
0
Java工具类:给程序增加版权信息

我们九天鸟的p2p网贷系统,基本算是开发完成了。 现在,想给后端的Java代码,增加版权信息。 手动去copy-paste,太没有技术含量。 于是,写了个Java工具类,给Java源文件增加版权信息。 源代...

jtn
2015/05/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

什么是集群、分布式、集中式、伪分布式

1. 集中式 将项目等部署到同一台机器上,对机器性能要求比较高,一般会用多台机器备份,否则,如果机器出现死机等状况,整个项目将不能运行。 eg:就好比你要盖一座房子,你房子就给一个人盖...

吴伟祥
40分钟前
0
0
微服务写的最全的一篇文章

今年有人提出了2018年微服务将疯狂至死,可见微服务的争论从未停止过。在这我将自己对微服务的理解整理了一下,希望对大家有所帮助。 1.什么是微服务 1)一组小的服务(大小没有特别的标准,...

Java烂猪皮
41分钟前
0
0
Java 并发编程原理

为什么要使用多线程? 通过多线程提高吞吐量 伸缩性比较好,可以增加 CPU 核心来提高程序性能 什么场景下使用多线程? 如:tomcat BIO Java 如何实现多线程? Thread、Runnable、ExecutorSer...

aelchao
56分钟前
2
0
谨慎的覆盖clone方法

说在前面 有些专家级程序员干脆从来不去覆盖clone方法,也从来不去调用它,除非拷贝数组。 其他方式 可以提供一个构造函数或者工厂去实现clone功能。 相比于clone,它们有如下优势: 不依赖于...

XuePeng77
56分钟前
1
0
什么是最适合云数据库的架构设计?

分布式数据库技术发展多年,但是在应用、业务的驱动下,分布式数据库的架构一直在不断发展和演进。 开源金融级分布式数据库SequoiaDB,经过6年的研发,坚持从零开始打造数据库核心引擎。在技...

巨杉数据库
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部