Java使用Calendar类实现动态日历

 更新时间:2021年07月29日 17:14:55   作者:菜鸟的第一天  
这篇文章主要为大家详细介绍了Java使用Calendar类实现动态日历,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了Java使用Calendar类实现动态日历的具体代码,供大家参考,具体内容如下

题目:

使用Calendar类实现一个动态日历,要求能够通过输入一个年份,月份显示当月的日历布局,并且将周六周天使用"[]"包裹起来,另外要求如果显示为当月日历时,把当天的日期使用"*"标记出来。

步骤分析:

1.打印日历

1.1当月总天数

1.2当月第一天是周几(注意:月份是从0开始,星期是从周日(1)开始)

2.周末用【】包裹

3.当前日期前加*号

代码实现:

package com.softeem.j2016.example;
 
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
 
/**
 * 1.打印日历
 * 1.1当月总天数
 * 1.2当月第一天是周几
 * 2.周末用【】包裹
 * 3.当前日期加“*”
 * @author admin
 * 2021/7/23
 */
public class CalendarDemo {
    //获取一个日期实例
    static  Calendar c = Calendar.getInstance();
 
    public static void show(int year,int month){
        //获取当天日期
        Date today = new Date();
        //获取系统时间的年月日
        int y = today.getYear() +1900;
        int m = today.getMonth() +1;
        int d = today.getDate() ;
 
        c.set(Calendar.YEAR,year);
        c.set(Calendar.MONTH,month-1);
        //设置当前日历的日期为本月的第一天(7.1)
        c.set(Calendar.DAY_OF_MONTH,1);
        //获取当前字段所表示日历的可能具备最大值(本月总天数)
        int days = c.getActualMaximum(Calendar.DAY_OF_MONTH);
        //获取当月第一天是周几(7.1前面设置为本月第一天),周日=1;
        int week = c.get(Calendar.DAY_OF_WEEK)-1;
        //如果当天是周日,则设置为7
        week = week == 0?7 :week;
        //打印空格数
        System.out.printf("%d月一共有%d天,1号是周%d\n",month,days,week);
        System.out.printf("==========【%d】年【%d】月==========\n",year,month);
        System.out.println("一\t二\t三\t四\t五\t六\t日");
        System.out.println("================================");
        //计数器
        int count  = 0;
        //(输出空格)如果当天是星期四则说明有三个空格,需要循环三次,则week-1
        for (int i = 0; i < week - 1; i++) {
            System.out.print("\t");
            count++;
        }
        for (int i = 1; i <=days; i++) {
            count++;
            //根据日期的数值判断是否是周末,如果是则用"[]"包裹
            String date = (count % 7 ==6 || count % 7 == 0)?"["+i+"]\t":i+"\t";
            //在当前日期前使用"*"标记
            date = (y == year && m == month && d == i)?"*" + date:date;
            //输出日期
            System.out.print(date);
            //达到七位则换行
            if (count%7==0){
                System.out.println();
            }
        }
    }
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入年份");
        int year = sc.nextInt();
        System.out.println("请输入月份");
        int month = sc.nextInt();
        show(year,month);
    }
}

效果截图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Java微信公众号推送模版消息的步骤示例详解

    Java微信公众号推送模版消息的步骤示例详解

    模板消息是一种向用户发送通知的服务,广泛用于订单状态更新、服务提醒等场景,下面,我将详细介绍如何使用Java结合微信官方提供的API来实现模板消息的推送,感兴趣的朋友跟随小编一起看看吧
    2024-08-08
  • JVM(Java虚拟机)简介(动力节点Java学院整理)

    JVM(Java虚拟机)简介(动力节点Java学院整理)

    Java虚拟机(Jvm)是可运行Java代码的假想计算机。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。对java jvm 虚拟机感兴趣的朋友通过本文一起学习吧
    2017-04-04
  • Elasticsearch 映射参数详解 fields

    Elasticsearch 映射参数详解 fields

    这篇文章主要介绍了fields Elasticsearch 映射参数fields,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • SpringCache快速使用及入门案例

    SpringCache快速使用及入门案例

    Spring Cache 是Spring 提供的一整套的缓存解决方案,它不是具体的缓存实现,本文主要介绍了SpringCache快速使用及入门案例,感兴趣的可以了解一下
    2023-08-08
  • MyBatis-Plus基于MyBatis封装 BaseMapper的流程步骤

    MyBatis-Plus基于MyBatis封装 BaseMapper的流程步骤

    MyBatis-Plus作为 MyBatis 的增强框架,通过 BaseMapper 提供了通用的 CRUD 操作,极大地提升了开发效率,为了更透彻地理解其封装机制,本文将采用链路追踪的思维,从开发者调用接口开始,分析其如何基于 MyBatis 完成对 BaseMapper 的封装,需要的朋友可以参考下
    2025-04-04
  • Spring Cloud 系列之注册中心 Eureka详解

    Spring Cloud 系列之注册中心 Eureka详解

    Netflix Eureka 是由 Netflix 开源的一款基于 REST 的服务发现组件,包括 Eureka Server 及 Eureka Client。这篇文章主要介绍了Spring Cloud 系列之注册中心 Eureka,需要的朋友可以参考下
    2020-11-11
  • JAVA中Context的详细介绍和实例分析

    JAVA中Context的详细介绍和实例分析

    这篇文章主要介绍了JAVA中Context的详细介绍和实例分析,Context是维持android各组件能够正常工作的一个核心功能类。如果感兴趣来学习一下
    2020-07-07
  • 使用maven构建java9 service实例详解

    使用maven构建java9 service实例详解

    本篇文章主要介绍了使用maven构建java9 service实例详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • Java 实现协同过滤算法推荐算法的示例代码

    Java 实现协同过滤算法推荐算法的示例代码

    本文介绍了协同过滤算法的概念,包括基于用户的协同过滤和基于物品的协同过滤,文章详细解释了数据准备、相似度计算以及如何在Java中实现这些算法,通过一个简单的用户-物品评分矩阵示例,展示了如何计算用户和物品之间的相似度,并推荐未评分的物品,感兴趣的朋友一起看看吧
    2025-02-02
  • 堆排序实例(Java数组实现)

    堆排序实例(Java数组实现)

    下面小编就为大家分享一篇使用Java数组实现堆排序的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12

最新评论