JAVA中获得一个月最大天数的方法

参考博客:http://www.cnblogs.com/relucent/p/4566582.html

Calendar 类是一个抽象类,为日历字段之间的转换提供了一些方法。
其中有一个重要方法 getActualMaximum ,该方法用于返回指定日历字段实际的最大值。

利用这个方法(Calendar.getActualMaximum),我们可以获得某年某月的天数。

代码如下:

/**
* 获得某个月最大天数
*
* @param year 年份
* @param month 月份 (1-12)
* @return 某个月最大天数
*/
public int getMaxDayByYearMonth(int year, int month) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, month-1);
return calendar.getActualMaximum(Calendar.DATE);
}

备注:以上代码有两个需要注意的地方:

① Calendar除了getActualMaximum方法之外,还有一个看起来类似的方法getMaximum,但是这两个方法是不同的:
getActualMaximum 返回实际的最大数值,getMaximum 返回的是可能的最大数值。
上面的代码如果改成getMaximum,那么一般情况都会恒定的返回31 (月份中可能的最大天数是31)

② Calendar 的月份取值范围是 0 - 11 , 0代表1月 11代表12月份
(这是因为Java中的月份遵循了罗马历中的规则:当时一年中的月份数量是不固定的,第一个月是JANUARY。而Java中Calendar.MONTH返回的数值其实是当前月距离第一个月有多少个月份的数值,JANUARY在Java中返回“0”,所以我们操作月份的时候会根据需要做 +1 或 -1 的处理)

获取年月日时分秒星期

public void test1() {
// 获取年
int year = calendar.get(Calendar.YEAR); // 获取月,这里需要需要月份的范围为0~11,因此获取月份的时候需要+1才是当前月份值
int month = calendar.get(Calendar.MONTH) + 1; // 获取日
int day = calendar.get(Calendar.DAY_OF_MONTH); // 获取时
int hour = calendar.get(Calendar.HOUR);
// int hour = calendar.get(Calendar.HOUR_OF_DAY); // 24小时表示 // 获取分
int minute = calendar.get(Calendar.MINUTE); // 获取秒
int second = calendar.get(Calendar.SECOND); // 星期,英语国家星期从星期日开始计算
int weekday = calendar.get(Calendar.DAY_OF_WEEK); System.out.println("现在是" + year + "年" + month + "月" + day + "日" + hour+ "时" + minute + "分" + second + "秒" + "星期" + weekday);
}

一年后的今天

 // 一年后的今天
@Test
public void test2 () {
// 同理换成下个月的今天calendar.add(Calendar.MONTH, 1);
calendar.add(Calendar.YEAR, 1); // 获取年
int year = calendar.get(Calendar.YEAR); // 获取月
int month = calendar.get(Calendar.MONTH) + 1; // 获取日
int day = calendar.get(Calendar.DAY_OF_MONTH); System.out.println("一年后的今天:" + year + "年" + month + "月" + day + "日1 } }

获取任意一个月的最后一天

 @Test
public void test3 () {
// 假设求6月的最后一天
int currentMonth = 6;
// 先求出7月份的第一天,实际中这里6为外部传递进来的currentMonth变量
//
calendar.set(calendar.get(Calendar.YEAR), currentMonth, 1);
calendar.add(Calendar.DATE, -1);
// 获取日
int day = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println("6月份的最后一天为" + day + "号");
}

设置日期(注意:设置月份是8月,得到就是8月,不用加1)

 public void test4 () {
calendar.set(Calendar.YEAR, 2000);
System.out.println("现在是" + calendar.get(Calendar.YEAR) + "年"); calendar.set(2008, 8, 8);
// 获取年
int year = calendar.get(Calendar.YEAR); // 获取月
int month = calendar.get(Calendar.MONTH); // 获取日
int day = calendar.get(Calendar.DAY_OF_MONTH); System.out.println("现在是" + year + "年" + month + "月" + day + "日");
}

日期类和日历类互换

//Calendar转化为Data
//返回标准化的Date
public static Date calendarToData(int year, int month, int day) {
Calendar calendar = Calendar.getInstance();//日历类的实例化
calendar.set(year, month - 1, day);//设置日历时间,月份必须减一
Date date = calendar.getTime(); // 从一个 Calendar 对象中获取 Date 对象
return date;
}
System.out.println(calendarToData(2017,3,16));//打印测试 //Data转化为Calendar
//返回的的是日历类里面有关时间的全部信息。
public static Calendar dataToCalendar(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar;
} Date date = new Date();//直接new对象,获取的是当前时间
System.out.println(dataToCalendar(date));//打印测试

得到任意时间段得到时间集合List

public static List getDateList(String time1, String time2) {
ArrayList<String> list = new ArrayList<>();
Date date1 =null;
Date date2 =null;
SimpleDateFormat dateFormat2 = new SimpleDateFormat("yyyy-MM-dd");
try {
date1= dateFormat2.parse(time1);
date2= dateFormat2.parse(time2);
} catch (ParseException e) {
e.printStackTrace();
}
Calendar calendar = Calendar.getInstance();//日历类的实例化
while(date1.before(date2)){
calendar.setTime(date1);
String s = dateFormat2.format(date1);
calendar.add(Calendar.DAY_OF_MONTH,1);
date1=calendar.getTime();
list.add(s);
}
return list;
}

java日期相关的更多相关文章

  1. Java日期相关操作

    1.获得日期 在旧版本 JDK 的时代,有不少代码中日期取值利用了 java.util.Date 类,但是由于 Date 类不便于实现国际化,其实从 JDK1.1 开始,就更推荐使用 java.uti ...

  2. Java基础之Java常用类--Object类,字符串相关类,包装类,日期相关类,数字相关类

    Java是一种面向对象的语言,也就是将万事万物可以描述为对象,特点如下: 1.面向对象是常见的一种思考习惯,符合人们的思考习惯.2.面向对象的出现,将复杂的事情简单化.3.面向对象的出现,将之前过程中 ...

  3. Java工具类——日期相关的类

    前言 在日常的开发工作当中,我们经常需要用到日期相关的类(包括日期类已经处理日期的类),所以,我就专门整理了一篇关于日期相关的类,希望可以帮助到大家. 正文 一.日期类介绍 在 Java 里面,操作日 ...

  4. ☕【Java深层系列】「技术盲区」让我们一起完全吃透针对于时间和日期相关的API指南

    技术简介 java中的日期处理一直是个问题,没有很好的方式去处理,所以才有第三方框架的位置比如joda.文章主要对java日期处理的详解,用1.8可以不用joda. 时间概念 首先我们对一些基本的概念 ...

  5. Java日期处理类的相关使用

    java常用类-java日期处理类 Date类 Date类是jdk给我们提高的标准日期类,在java.util包下: 示例代码: import java.util.Date; public class ...

  6. Android随笔之——Android时间、日期相关类和方法

    今天要讲的是Android里关于时间.日期相关类和方法.在Android中,跟时间.日期有关的类主要有Time.Calendar.Date三个类.而与日期格式化输出有关的DateFormat和Simp ...

  7. [转]Java日期时间使用总结

    原文地址:http://lavasoft.blog.51cto.com/62575/52975/ 一.Java中的日期概述   日期在Java中是一块非常复杂的内容,对于一个日期在不同的语言国别环境中 ...

  8. java日期处理总结

    Java日期时间使用总结   一.Java中的日期概述   日期在Java中是一块非常复杂的内容,对于一个日期在不同的语言国别环境中,日期的国际化,日期和时间之间的转换,日期的加减运算,日期的展示格式 ...

  9. Java日期时间使用总结

    一.Java中的日期概述   日期在Java中是一块非常复杂的内容,对于一个日期在不同的语言国别环境中,日期的国际化,日期和时间之间的转换,日期的加减运算,日期的展示格式都是非常复杂的问题.   在J ...

随机推荐

  1. numpy行转列

    >>> a = np.array([1, 2, 3]) >>> a = a.reshape(-1, 1) #-1表示任意行数,1表示1列 >>> ...

  2. PAT 1049 数列的片段和

    https://pintia.cn/problem-sets/994805260223102976/problems/994805275792359424 给定一个正数数列,我们可以从中截取任意的连续 ...

  3. PAT 1041 考试座位号

    https://pintia.cn/problem-sets/994805260223102976/problems/994805281567916032 每个PAT考生在参加考试时都会被分配两个座位 ...

  4. Spring Cloud Zipkin

    Zipkin the idea is from the googlge paper:Dapper https://yq.aliyun.com/articles/60165 https://www.e4 ...

  5. matplotlib绘图2

    fig=plt.figure() fig.add_subplot(3,3,1)#3行3列 第一个图 n=128 X=np.random.normal(0,1,n) Y=np.random.normal ...

  6. k8s 1.9 安装

    测试环境 主机 系统 master CentOS 7.3 node CentOS 7.3 2.关闭selinux(所有节点都执行) [root@matser ~]# getenforce Disabl ...

  7. js & float number bug

    js & float number bug 前端最好不要处理任何的 float number 的计算/精确度转换的操作,不热很容易丢失精度,显示错误! 前端显示个 0.0 都很费劲,最好的方式 ...

  8. Django-website 程序案例系列-4 ORM数据库操作

    数据库表的创建: 使用mysql时注意,在setting.py中的设置: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql' ...

  9. 微信access_token请求之简单缓存方法封装

    还有东西要搞,就直接上代码 function.php <?php // 一个好玩的 curl 类 // https://github.com/metowolf/Meting/blob/maste ...

  10. 自学Python5.4-类 _init_方法

    自学Python之路 自学Python5.4-类  _init_方法 1. 定义一个类 定义一个类的格式如下: