Java是一种高级语言,可以用到很多领域中,这不,用java还可以做日历,那么怎么用java做日历?今天我们就给大家讲解一下用java做日历的方法,学会大家也可以做一个日历出来!

我们需要用到两个类:SimpleDateFormat和Calendar。

首先看看这两个类的用法:

类 SimpleDateFormat

SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期(Date) ->

文本(String))、解析(文本(String) -> 日期(Date))和规范化。

具体要用到的方法:

SimpleDateFormat(String pattern) 用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。

Date parse(String source) 从给定字符串的开始解析文本以生成日期。

这里我们使用SimpleDateFormat生成一个格式为“yyyy-MM”的实例,并通过parse方法将我们输入的字符串转换成日期(Date)对象。具体实现如下:SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); //生成格式化实例 System.out.print("请输入要查询的月份(yyyy-MM):");

String str = scanner.next(); //获取输入字符串 Date date = null; //要获取的Date对象变量 try {

date = sdf.parse(str); //将字符串转成日期对象,这里会抛出格式转换异常,需要用try..catch进行处理} catch (Exception e) {

System.out.println("时间格式不正确");

}

类 Calendar

Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR(年)、MONTH(月)、Date(日)

等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。

日历类使我们更好的对时间进行操作,使我们可以轻易获取到具体的某个时间字段,并能对时间字段进行增、减、设置等操作。

日历类是一个抽象类,所以我们不能对其进行实例化,但该类提供了一个静态方法getInstance,所以我们可以通过该方法来获取一个Calendar的对象实例。

我们的目的是做一个日历,而日历最重要的是获取当月第一天是星期几以及获取该月的最大天数,Calendar都为我们提供了具体的方法来实现。

要用到的方法:

Calendar getInstance() 使用默认时区和语言环境获得一个日历。

void setTime(Date date) 使用给定的 Date 设置此 Calendar 的时间。

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

int getActualMaximum(int field) 根据当前Calendar设置的时间来获取指定字段的最大值。

我们需要用getInstance方法来获取Calendar实例,并通过上面SimpleDateFormat中字符串转成的Date对象来给我们的Calendar设置时间,最后通过get方法来获取当月第一天是星期几,并通过getActualMaximum方法来获得当月天数。

注意的几点:

Calendar获取的MONTH是从0开始,最大为11

Calendar获取的DAY_OF_WEEK为从1开始,最大为7,且1代表的是星期天,2~7代表是星期一到星期六

具体实现如下:Calendar calendar = Calendar.getInstance();

//获取Calendar对象calendar.setTime(date); //给Calendar对象设置时间int year =

calendar.get(calendar.YEAR); //获取所设置的年份int month = calendar.get(calendar.MONTH);

//获取所设置的月System.out.println("===================="+year+"年"+(month+1)+"月======================");c.set(c.DATE, 1);int []dayOfWeek = {7,1,2,3,4,5,6};int weekDay =

c.get(c.DAY_OF_WEEK);

int firstWeekDay = dayOfWeek[weekDay-1];

接下来我们要开始打印日期了,由于我们的日期是从1开始显示,一直到当月的最大一天,但我们显示的位置要和星期相对应,所以在这里我把日期(day)开始设置为“-firstWeekDay+1”,来填充前面所需要的空白。

我们还会涉及一个换行的问题,正常逻辑是每7天换行一次,而我们的日期是从“-firstWeekDay+1”开始的,所以我们在计算换行时需要再将其加上。具体实现见代码吧。int day = -firstWeekDay + 1; //第一天 for (;day<=c.getActualMaximum(c.DATE); day++) {

if (day <= 0)

{

System.out.print("\t"); //day从1开始显示

}

else

{

System.out.print(day + "\t");

}

if ((day + firstWeekDay - 1) % 7 == 0)

{ //每计7天换行一次 System.out.println();

}

}

这样,我们的日历就完成啦。

从这些我们可以看出,要做一个日历出来还是需要花费一些时间的,在逻辑思维上一定要清晰,这样才能做的好!最后大家如果想要了解更多java实例知识,敬请关注奇Q工具网。

推荐阅读:

怎么用java做日历_怎么用java做日历?实例讲解相关推荐

  1. 怎么用java做日历_如何用Java制作一个简易日历

    简易日历制作 记录一下Java实现的一个日历小程序,效果图如下: 实现以上的效果,我们需要用到两个类:SimpleDateFormat和Calendar. 首先看看这两个类的用法: 类 SimpleD ...

  2. java 制作简易日历_如何用Java制作一个简易日历

    简易日历制作 记录一下Java实现的一个日历小程序,效果图如下: 实现以上的效果,我们需要用到两个类:SimpleDateFormat和Calendar. 首先看看这两个类的用法: 类 SimpleD ...

  3. java手动回收_浅谈java是如何做资源回收补救的

    学习java的过程,我们经常谈论一个对象的回收,尤其是资源类型,如果没有显示的关闭,对象就被回收了,说明出现了资源泄漏.java本身为了防止这种情况,做了一些担保的方式,确保可以让未关闭的资源合理回收 ...

  4. java 时区处理_如何使用Java处理日历时区?

    如何使用Java处理日历时区? 我有一个来自我的应用程序的Timestamp值. 用户可以在任何给定的本地TimeZone中. 由于此日期用于假定给定时间始终为GMT的WebService,因此我需要 ...

  5. 用java编写日历_如何用Java制作一个简易日历

    简易日历制作 记录一下Java实现的一个日历小程序,效果图如下: 实现以上的效果,我们需要用到两个类:SimpleDateFormat和Calendar. 首先看看这两个类的用法: 类 SimpleD ...

  6. java outlook 日历_使用Outlook中的“日历”功能管理日程的方法

    经常在外奔波的销售经理小黄,需要时刻掌控自己的日程.小黄通常使用Outlook中的"日历"功能来统一组织和管理自己的日程信息.当他外出办公,或者在差旅途中时,如若手边没有计算机,他 ...

  7. java应聘兼职_学的Java如何找兼职?

    Java相信大家应该都不会很陌生,生活中很多的程序都是用Java编写而成的,正因如此才有这么多学习Java的同学,有些同学表示我感觉自己学的差不多了,想要找一些兼职一方面锻炼自己,一方面还能赚点外快, ...

  8. caldav选择导入日历_如何用安全的日历协议替换CalDAV

    caldav选择导入日历 日历技术默认情况下未加密. 这意味着您与您的日历通知之间的任何个人或提供者都可以读取并可能存储该信息. 用户应该通过使用与端到端加密配对的开源软件来拥有和保护数据. 许多人都 ...

  9. java 内存空间_怎样用java实现存储空间动态分配

    1.java是如何管理内存的 Java的内存管理就是对象的分配和释放问题.(两部分) 分配 :内存的分配是由程序完成的,程序员需要通过关键字new 为每个对象申请内存空间 (基本类型除外),所有的对象 ...

  10. java编码技巧_两个Java初学者编码技巧

    以下是我在Java-For-Testers面对面培训中教授新开发时口头传递的一些技巧. 首先编写您想要查看的代码 看到它们后立即删除语法错误 编写您想要首先看到的代码 例如,创建博客评论,例如: / ...

最新文章

  1. Log4j格式化符号
  2. 膨胀的计算机仿真,制冷空调中的计算机仿真与控制
  3. php如何让字母加1,如何使用PHP以任何顺序(从12个字母组成6个单词组成一个字母)进行字符搜索?...
  4. Linux iptables 防火墙相关命令介绍及使用
  5. 深入理解Java中的逃逸分析
  6. 北大开源分词工具包: 准确率远超THULAC、jieba 分词
  7. java实现人字拼,人字拼地板拼法大全
  8. SSIS 连接ORACLE 无法从 SQL 命令中提取参数的解决方案
  9. 美宇航局发现地球“表兄弟” 距离1400光年
  10. 对FT证券系统故障的分析与思考
  11. 用于遥感图像语义分割和单视图高度估计的编码器-双解码器IGARSS2019
  12. 关于深度学习人工智能模型的探讨(四)(5)
  13. 遇到Process finished with exit code -1073740791 (0xC0000409)实在不能解决的时候要注意
  14. 【算法】在N个乱序数字中查找第K大的数字
  15. [置顶]《游戏引擎架构》信息总汇
  16. ArtFin艺术飯+「雅贡臻品」与版权猫IP猫ipmall登陆台北!AiHi@HiFi++
  17. 民安汇智量表科普!满意度调查量表怎么选?
  18. B站视频下载软件分享
  19. 什么叫反光识别读数识别_反光识别和读数识别是什么意思 反光膜 反光镜 反光材料...
  20. linux安装zip客户端,如何在各种Linux发行版中安装zip压缩与解压缩程序

热门文章

  1. Google App Engine + JDO + Spring MVC,CRUD示例
  2. FF7 中的最大伤害分析
  3. qt webview 忽略 ssl错误 ignoreSslErrors
  4. VC6.0 快捷键整理
  5. 实时语音趣味变声,大叔变声“妙音娘子”Get一下
  6. MNE-Python | 开源生理信号分析神器(一)
  7. 逻辑函数(表示方法、形式转换、化简、最小项、最大项)
  8. 使用PS实现简单的名片制作
  9. 论文进展-关于小样本学习的一些思考和疑问
  10. android 自定义字体 ttf,Android APP支持自定义字体