`

聊一聊Calendar的使用

    博客分类:
  • java
 
阅读更多

  在令人头痛的日期处理中,我们是否发现了那强大的Calendar,学习到这个类,感觉强大无比,特记录下

package com.iceStudy.util;

import java.util.Calendar;
import java.util.Date;
import static java.util.Calendar.*;

public class CalendarStudy {
    Calendar cal=Calendar.getInstance();
	public static void main(String[] args) {
		CalendarStudy cals=new CalendarStudy();
		cals.show();
			}
    /**
     * static int ALL_STYLES           指示所有风格名称的 getDisplayNames 的风格说明符,比如 "January" 和 "Jan"。 
	   static int AM           指示从午夜到中午之前这段时间的 AM_PM 字段值。 
static int AM_PM           get 和 set 的字段数字,指示 HOUR 是在中午之前还是在中午之后。 
static int APRIL           指示在格里高利历和罗马儒略历中一年中第四个月的 MONTH 字段值。 
protected  boolean areFieldsSet           如果 fields[] 与当前的设置时间同步,则返回 true。 
static int AUGUST           指示在格里高利历和罗马儒略历中一年中第八个月的 MONTH 字段值。 
static int DATE           get 和 set 的字段数字,指示一个月中的某天。 
static int DAY_OF_MONTH           get 和 set 的字段数字,指示一个月中的某天。 
static int DAY_OF_WEEK           get 和 set 的字段数字,指示一个星期中的某天。 
static int DAY_OF_WEEK_IN_MONTH           get 和 set 的字段数字,指示当前月中的第几个星期。 
static int DAY_OF_YEAR           get 和 set 的字段数字,指示当前年中的天数。 
static int DECEMBER           指示在格里高利历和罗马儒略历中一年中第十二个月的 MONTH 字段值。 
static int DST_OFFSET           get 和 set 的字段数字,以毫秒为单位指示夏令时的偏移量。 
static int ERA           指示年代的 get 和 set 的字段数字,比如罗马儒略历中的 AD 或 BC。 
static int FEBRUARY           指示在格里高利历和罗马儒略历中一年中第二个月的 MONTH 字段值。 
static int FIELD_COUNT           get 和 set 可识别的不同字段的数量。 
protected  int[] fields           此日历当前设置时间的日历字段值。 
static int FRIDAY           指示 Friday 的 DAY_OF_WEEK 字段值。 
static int HOUR           get 和 set 的字段数字,指示上午或下午的小时。 
static int HOUR_OF_DAY           get 和 set 的字段数字,指示一天中的小时。 
protected  boolean[] isSet           通知是否设置了该日历某一指定日历字段的标志。 
protected  boolean isTimeSet           如果 time 值是一个有效值,则返回 true。 
static int JANUARY           指示在格里高利历和罗马儒略历中一年中第一个月的 MONTH 字段值。 
static int JULY           指示在格里高利历和罗马儒略历中一年中第七个月的 MONTH 字段值。 
static int JUNE           指示在格里高利历和罗马儒略历中一年中第六个月的 MONTH 字段值。 
static int LONG           指示长名称的 getDisplayName 和 getDisplayNames 的风格说明符,比如 "January"。 
static int MARCH           指示在格里高利历和罗马儒略历中一年中第三个月的 MONTH 字段值。 
static int MAY           指示在格里高利历和罗马儒略历中一年中第五个月的 MONTH 字段值。 
static int MILLISECOND           get 和 set 的字段数字,指示一秒中的毫秒。 
static int MINUTE           get 和 set 的字段数字,指示一小时中的分钟。 
static int MONDAY           指示 Monday 的 DAY_OF_WEEK 字段值。 
static int MONTH           指示月份的 get 和 set 的字段数字。 
static int NOVEMBER           指示在格里高利历和罗马儒略历中一年中第十一个月的 MONTH 字段值。 
static int OCTOBER           指示在格里高利历和罗马儒略历中一年中第十个月的 MONTH 字段值。 
static int PM           指示从中午到午夜之前这段时间的 AM_PM 字段值。 
static int SATURDAY           指示 Saturday 的 DAY_OF_WEEK 字段值。 
static int SECOND           get 和 set 的字段数字,指示一分钟中的秒。 
static int SEPTEMBER           指示在格里高利历和罗马儒略历中一年中第九个月的 MONTH 字段值。 
static int SHORT           指示短名称的 getDisplayName 和 getDisplayNames 的风格说明符,比如 "Jan"。 
static int SUNDAY           指示 Sunday 的 DAY_OF_WEEK 字段值。 
static int THURSDAY           指示 Thursday 的 DAY_OF_WEEK 字段值。 
protected  long time           日历的当前设置时间,以毫秒为单位,表示自格林威治标准时间 1970 年 1月 1 日 0:00:00 后经过的时间。 
static int TUESDAY           指示 Tuesday 的 DAY_OF_WEEK 字段值。 
static int UNDECIMBER           指示一年中第十三个月的 MONTH 字段值。 
static int WEDNESDAY           指示 Wednesday 的 DAY_OF_WEEK 字段值。 
static int WEEK_OF_MONTH           get 和 set 的字段数字,指示当前月中的星期数。 
static int WEEK_OF_YEAR           get 和 set 的字段数字,指示当前年中的星期数。 
static int YEAR           指示年的 get 和 set 的字段数字。 
static int ZONE_OFFSET           get 和 set 的字段数字,以毫秒为单位指示距 GMT 的大致偏移量。 
 
     */
	public void show(){
		//cal.setTime(new Date());//设置时间为今天
		System.out.println("年"+cal.get(YEAR));//使用了静态导入,所以省略了Calendar名字,全称应为Calendar.YEAR
		System.out.println("月"+cal.get(MONTH));
		System.out.println("日"+cal.get(DAY_OF_MONTH));
		System.out.println("时"+cal.get(HOUR_OF_DAY));
		System.out.println("分"+cal.get(MINUTE));
		System.out.println("秒"+cal.get(SECOND));
		
		cal.setTime(new Date());//与传统的date互换,很方便
		Date date=cal.getTime();
		
		//cal.set(year, month, date, hourOfDay, minute)//可以自由设置指定时间
		
		cal.add(DAY_OF_MONTH, 1);//灵活而好用的一个方法,可以自由的选择加减那个字段,可以构造出很多实用的应用。
		
		System.out.println("改变后的"+cal.get(DAY_OF_MONTH));
		
		cal.set(DAY_OF_WEEK, MONDAY);//同样令活儿好用的方法,可以实现很多功能,例如得到本周一日期,由此发散开,几乎应用太广了
	    
		System.out.println("改变后的"+cal.get(DAY_OF_MONTH));
		
		//复杂一些,得到今年二月的第二个星期周5的日期
		
		cal.set(MONTH, 2);
		cal.set(WEEK_OF_MONTH, 2);
		cal.set(DAY_OF_WEEK_IN_MONTH, FRIDAY);
		
		System.out.println("改变后的"+cal.get(DAY_OF_MONTH));
		
		//获取下月第一天日期 ps:我看je上有人自己写的方法,我觉得能比较好的体现出add和set的巧妙
		Calendar lastDate = Calendar.getInstance();   
		lastDate.add(MONTH,1);//加一个月   
	    lastDate.set(DAY_OF_MONTH, 1);//把日期设置为当月第一天    
	    System.out.println("改变后的"+lastDate.get(DAY_OF_MONTH));
		  
		
		// 计算当月最后一天,返回字符串   
		 lastDate = Calendar.getInstance();   
	     lastDate.set(DAY_OF_MONTH,1);//设为当前月的1号   
	     lastDate.add(MONTH,1);//加一个月,变为下月的1号   
	     lastDate.add(DAY_OF_MONTH,-1);//减去一天,变为当月最后一天   
	     System.out.println("改变后的"+lastDate.get(DAY_OF_MONTH));
			
	     
	     
	     //总结强大的add,set,注意他们可以正负操作,如果是关于从今天开始的某个特殊时间则add是不错的选择,如果是固定时间的选择set则很好的帮助我们,
	     //更多的时候,则是add和set共同作用,配合那些强大的字段,Calendar必将解放我们的痛苦思维。
	}
}

 

 

附件是java 文件,更多的用法,更灵活的使用,就要靠大家对那些字段的认知了

分享到:
评论

相关推荐

    聊一聊java中date的使用

    与旧的Date和Calendar API相比,新API更加直观,不易出错,也支持更多的日期时间操作。例如,可以这样创建和格式化一个日期: ```java import java.time.LocalDateTime; import java.time.format.DateTimeFormatter...

    GoogleHangoutsMeetOutlookAddin:这是一个使用Office JavaScript API编写的插件,用于通过Outlook创建Google Hangouts Meet事件

    使用此插件创建会议后,将使用Google Calendars API创建一个新的Google Calendar事件,并附加一个Hangouts Meet事件。 此事件从当前时间开始创建,并从当前时间开始一个小时结束。 我们确定,尽管需要创建日历事件...

    弹出窗口中的Google日历可点击链接「Google Calendar Clickable Links in Popups」-crx插件

    尽管“ where”是Google环聊视频链接时,这并不是问题(因为它们用特殊的小部件替换了where字段),而where字段中包含实际地址(因为Google提供了(用于映射到该位置的“地图”链接),如果您想将信息存储在不适合...

    mattermost-hangout:最重要的集成,可通过环聊创建通话

    要使用此应用程序,您需要一个有效的域和一个连接到该域的服务器。 如果您没有类似的东西,可以使用 。 从Google控制台获取客户端ID和机密 转到Google Developers Console 建立专案 在API和身份验证中,选择API,...

    JAVA面试题解惑系列合集

    8. 聊聊基本类型(内置类型) Java定义了一套基本数据类型,包括byte、short、int、long、float、double、char和boolean。这些类型不是对象,但在某些情况下,基本类型也有对应的包装类,比如Integer对应int、Double...

    calendar:“Javascript 基础”课程中的作业。 2020 年 12 月

    我们使用 HTML、CSS 和 Javascript 创建了一个日历工具,用户可以在其中创建、更改和删除待办事项。 所有待办事项和更改都保存到本地存储。 如果您单击日历中的某个日期,则列表中只会显示该特定日期的待办事项,...

    Java面试题详解,和一些基础知识的深入剖析,个人认为非常棒

    “JAVA面试题解惑系列(八)——聊聊基本类型(内置类型)”涵盖了Java的原始数据类型,包括int、char、boolean等,它们与引用类型的不同之处以及它们的默认值和范围。 “JAVA面试题解惑系列(九)——继承、多态、...

    react-calendar

    Create React App入门该项目是通过引导的。可用脚本在项目目录中,可以运行:yarn start 在开发模式下运行应用程序。 打开在浏览器中查看它。 如果您进行编辑,则页面将重新加载。 您还将在控制台中看到任何棉绒错误...

    臧圩人--JAVA面试题解惑系列合集.pdf

    - **知识点**:介绍Java中日期和时间API的使用,重点在于`Date`、`Calendar`类以及新引入的`java.time`包下的类如`LocalDate`、`LocalTime`、`ZonedDateTime`等,以适应不同的时区需求。 **1.8 JAVA面试题解惑系列...

    linux jdk 1.8 64位

    - **Lambda表达式**:这是Java 8最重要的特性之一,它允许开发者使用函数作为方法参数,简化了多线程编程和处理集合数据。 - **方法引用和构造器引用**:这些是与lambda表达式相关的特性,可以更简洁地引用已有...

    java安卓仿微信聊天软件源码-Android_open_project:Android开源项目,旨在搜集平常工作中遇到和可能需要用到的一些好

    Calendar  * PickView StatusBar/ActionBar/ToolBar Menu/FloatingActionButton  * DiaLog Spinner/Toast  * Material Design Navigation Activity Fragment ##自定义控件 Layout 伸缩展开布局 视差布局 手势  *...

    安卓SD卡中各个文件夹功能的详尽说明

    25. `91Calendar`,`91PandaReader`:91黄历天气和熊猫看书应用的缓存。 26. `androidesk`:安卓壁纸应用的文件夹,存储下载的壁纸。 27. `AndroidOptimizer`:安卓优化大师的文件夹,包含优化记录和设置。 28. `...

    solutions:社区为Google Workspace提供的解决方案

    2. **Google Workspace**:Google Workspace(前身为G Suite)是Google为企业和个人提供的一个综合协作平台,包括Gmail、Calendar、Drive、Docs、Meet等服务。这些服务允许用户进行实时协作、文件共享、日程管理以及...

    新的

    7. **Java API**:Java的标准库提供了丰富的API,如Math类用于数学计算,Date和Calendar类处理日期和时间,Swing和JavaFX用于图形用户界面(GUI)开发等。 8. **JVM原理**:理解Java虚拟机(JVM)的工作原理,包括...

Global site tag (gtag.js) - Google Analytics